C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Newで作ったコントロールに別のNewで作ったコントロールを


(過去ログ 114 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■67451 / inTopicNo.1)  Newで作ったコントロールに別のNewで作ったコントロールを
  
□投稿者/ 寅 (6回)-(2013/08/03(Sat) 22:22:23)

分類:[.NET 全般] 

VB.net 2010でカメラのモニター画面を作成しようとして居ます。
カメラの数はシステムで異なるので、Newで必要画面分作成しようとして居ます。

先ずnewでデザイナーで作成したパネルにグループボックスを複数作成しました。
ここでグループボックスを作成しているのは、カメラの番号を表示したい為です。
これは成功して居ます。
このグループボックスに今度は画像を貼り付ける為にピクチャーボックスを作成するのに困っています。
先のグループボックスと同じ手法でデザイナーの上にピクチャーボックスをNewて゛作成し、BringToFront()で一番手前に持って来る事は成功しています。
ただ、この場合、ピクチャーボックスがグループボックスと同じ大きさに成り、グループボックスで作成したカメラ番号が見えなくなってしまいます。
一つとしては、ピクチャーボックスの高さを低くして、グループボックスのカメラ番号を見える様にする事ですが、プログラムとしては格好が良いものではありません。
先にNewで作ったグループボックスにピクチャーボックスをAdd出来れば、Dock機能で綺麗に目的を達成出来ると思います。
ただ、そのプログラムの仕方が分かりません。
何方か方法をお分かりに成る方、お教え下さい。
宜しくお願い致します。

注 このプログラムの前に下記のプログラムと同じ方法でグループボックスを作成してあります。

Me.pbxCamScr = New System.Windows.Forms.GroupBox(iCamNumUse) {}
' Dim i As Integer
Dim iCamNum = 0
Dim bForFin As Boolean = False 'Outer loop braking flag
For iVer As Integer = 0 To iCamNumVer - 1
For iHol As Integer = 0 To iCamNumHol - 1
'Make instance
Me.pbxCamScr(iCamNum) = New System.Windows.Forms.GroupBox 'Add new GroupBox
'Set propaty
Me.pbxCamScr(iCamNum).Name = "GroupBox" + iCamNum.ToString() 'Set group box name
Me.pbxCamScr(iCamNum).Text = "Cam" + iCamNum.ToString() 'Set group box title
Dim iWid As Integer
Dim iHig As Integer
iWid = pnlScrBrd.Width / iCamNumHol 'Calculate Group Box width
iHig = pnlScrBrd.Height / iCamNumVer 'Calculate Group Box height
Me.pbxCamScr(iCamNum).Size = New Size(iWid, iHig) 'Set Size
Me.pbxCamScr(iCamNum).Location = New Point(iHol * iWid, iVer * iHig) 'Set location
'Add control to the Panel
Me.pnlScrBrd.Controls.AddRange(pbxCamScr) 'これだと、グループボックス全領域に被ってしまう
Me.ResumeLayout(False)
iCamNum += 1 'Judge end of screen number
If (iCamNum > iCamNumUse - 1) Then
bForFin = True
Exit For
End If
Next iHol
If bForFin = True Then 'Exif also from outer for loop
Exit For
End If
Next iVer
引用返信 編集キー/
■67452 / inTopicNo.2)  Re[1]: Newで作ったコントロールに別のNewで作ったコントロールを
□投稿者/ ?? (3回)-(2013/08/03(Sat) 22:53:49)
No67451 (寅 さん) に返信
> VB.net 2010でカメラのモニター画面を作成しようとして居ます。
> カメラの数はシステムで異なるので、Newで必要画面分作成しようとして居ます。
>
> 先ずnewでデザイナーで作成したパネルにグループボックスを複数作成しました。
> ここでグループボックスを作成しているのは、カメラの番号を表示したい為です。
> これは成功して居ます。
> このグループボックスに今度は画像を貼り付ける為にピクチャーボックスを作成するのに困っています。
> 先のグループボックスと同じ手法でデザイナーの上にピクチャーボックスをNewて゛作成し、BringToFront()で一番手前に持って来る事は成功しています。
> ただ、この場合、ピクチャーボックスがグループボックスと同じ大きさに成り、グループボックスで作成したカメラ番号が見えなくなってしまいます。
> 一つとしては、ピクチャーボックスの高さを低くして、グループボックスのカメラ番号を見える様にする事ですが、プログラムとしては格好が良いものではありません。
> 先にNewで作ったグループボックスにピクチャーボックスをAdd出来れば、Dock機能で綺麗に目的を達成出来ると思います。
> ただ、そのプログラムの仕方が分かりません。
> 何方か方法をお分かりに成る方、お教え下さい。
> 宜しくお願い致します。
>
> 注 このプログラムの前に下記のプログラムと同じ方法でグループボックスを作成してあります。
>
> Me.pbxCamScr = New System.Windows.Forms.Picture(iCamNumUse) {}
> ' Dim i As Integer
> Dim iCamNum = 0
> Dim bForFin As Boolean = False 'Outer loop braking flag
> For iVer As Integer = 0 To iCamNumVer - 1
> For iHol As Integer = 0 To iCamNumHol - 1
> 'Make instance
> Me.pbxCamScr(iCamNum) = New System.Windows.Forms.PictureBox 'Add new GroupBox
> 'Set propaty
> Me.pbxCamScr(iCamNum).Name = "GroupBox" + iCamNum.ToString() 'Set group box name
> Me.pbxCamScr(iCamNum).Text = "Cam" + iCamNum.ToString() 'Set group box title
> Dim iWid As Integer
> Dim iHig As Integer
> iWid = pnlScrBrd.Width / iCamNumHol 'Calculate Group Box width
> iHig = pnlScrBrd.Height / iCamNumVer 'Calculate Group Box height
> Me.pbxCamScr(iCamNum).Size = New Size(iWid, iHig) 'Set Size
> Me.pbxCamScr(iCamNum).Location = New Point(iHol * iWid, iVer * iHig) 'Set location
> 'Add control to the Panel
> Me.pnlScrBrd.Controls.AddRange(pbxCamScr) 'これだと、グループボックス全領域に被ってしまう
> Me.ResumeLayout(False)
> iCamNum += 1 'Judge end of screen number
> If (iCamNum > iCamNumUse - 1) Then
> bForFin = True
> Exit For
> End If
> Next iHol
> If bForFin = True Then 'Exif also from outer for loop
> Exit For
> End If
> Next iVer
引用返信 編集キー/
■67453 / inTopicNo.3)  Re[2]: Newで作ったコントロールに別のNewで作ったコントロールを
□投稿者/ 寅 (7回)-(2013/08/03(Sat) 22:58:26)
No67452 (?? さん) に返信
> ■No67451 (寅 さん) に返信
すみません、投稿したものですが、プログラム中のGroupBoxはPictureBoxの間違いです。
修正したものをアップしようとしたのですが、上手く行きませんでした。
引用返信 編集キー/
■67454 / inTopicNo.4)  Re[1]: Newで作ったコントロールに別のNewで作ったコントロールを
□投稿者/ Azulean (188回)-(2013/08/03(Sat) 23:33:43)
No67451 (寅 さん) に返信
> 先にNewで作ったグループボックスにピクチャーボックスをAdd出来れば、Dock機能で綺麗に目的を達成出来ると思います。
> ただ、そのプログラムの仕方が分かりません。

たとえば、こういったコードがあれば解決できると言うこと?

Public Class Form1

    Public Sub New()

        ' この呼び出しはデザイナーで必要です。
        InitializeComponent()

        ' InitializeComponent() 呼び出しの後で初期化を追加します。

        Dim groupBox As New GroupBox
        groupBox.Dock = DockStyle.Fill
        groupBox.Text = "test"
        Controls.Add(groupBox)

        Dim pictureBox As New PictureBox
        pictureBox.BackColor = Color.Red
        pictureBox.Dock = DockStyle.Fill
        groupBox.Controls.Add(pictureBox)

    End Sub
End Class

引用返信 編集キー/
■67456 / inTopicNo.5)  Re[2]: Newで作ったコントロールに別のNewで作ったコントロールを
□投稿者/ ?? (4回)-(2013/08/04(Sun) 13:29:33)
No67454 (Azulean さん) に返信
> ■No67451 (寅 さん) に返信
>>先にNewで作ったグループボックスにピクチャーボックスをAdd出来れば、Dock機能で綺麗に目的を達成出来ると思います。
>>ただ、そのプログラムの仕方が分かりません。
>
> たとえば、こういったコードがあれば解決できると言うこと?
>

ご回答有難うございます。
ご回答頂いた様に作っているつもりなんですが、ご回答と違う所は私はAddRangeを使っており、AzuleanさんのはAddですね。
Addにして、パラメーターも個々のコントロールにした所、所望の動きをしました。
有難うございました。

これでやっとカメラモニター画面のVB化が終了出来そうです。
これから画像の表示のVB化を行いますので、又お尋ねする事もあると思いますが、その節は宜しくお願い致します。
最大の難関はDirect-ShowのVB化なんですけど・・・(  ̄д ̄;)

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -