[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
フォーム上に各種のコントロールを配置する場合に、パネルを使ってグループ分けを行うことはよくあります。
そこで今回は、の使い方について順を追って説明したいと思います。
■パネル上のコントロールを一括 Enabled/Disabled 設定
フォーム上にパネルを張り付けて、そのパネルの上に5個のテキストボックスを張り付けています。 更にパネルへの処理を行う為に1個のボタンを配置します。
以下のソースを見て下さい。 ボタンのクリックイベントでパネルの Enabled の値を反転しています。
パネルへの Enabled 値を設定することで、パネルの上のコントロールを全て不可設定にできます。 これは結構便利だと思います。
Public Class frmPanel1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'パネルの「Enabled」を反転設定 Me.Panel1.Enabled = Not (Me.Panel1.Enabled) End Sub End Class
これを実行すると以下の様な表示になります。右側はボタンをクリックしてパネルを Disabled にした状態です。
■パネル上の個別のコントロールの Enabled/Disabled 設定との関係
次は、パネルのテキストボックスの直前にチェックボックスを配置して、デフォルトとして Checked の状態にします。 それぞれのチェックボックスの変化でテキストボックスの許可を設定してやります。
Public Class frmPanel2 'パネルの「Enabled」を反転 Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click Me.Panel1.Enabled = Not (Me.Panel1.Enabled) End Sub 'チェックボックスの「Checked」をパネルの「Enabled」に設定 Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged Me.TextBox1.Enabled = Me.CheckBox1.Checked End Sub Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged Me.TextBox2.Enabled = Me.CheckBox2.Checked End Sub Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox3.CheckedChanged Me.TextBox3.Enabled = Me.CheckBox3.Checked End Sub Private Sub CheckBox4_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox4.CheckedChanged Me.TextBox4.Enabled = Me.CheckBox4.Checked End Sub Private Sub CheckBox5_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox5.CheckedChanged Me.TextBox5.Enabled = Me.CheckBox5.Checked End Sub End Class
これを実行すると以下の様な表示になります。 右側は1個目と、4個目のチェックボックスをOFFにしてテキストボックスを Disabled にした後で、 ボタンをクリックしてパネルを Disabled にした状態です。
パネルの Enabled を Disable にした場合にはパネル上のコントロールの状態のまま不可状態(パネル全体に灰色)になります。 再度ボタンをクリックすれば、元の状態になることが分かります。
■パネル上のテキストボックス一括クリア
上記のフォームにボタンを追加して、そのボタンクリック時の処理として、パネル上のテキストボックスを全てクリアする方法を示します。
パネルにはその上に存在するコントロールを Controls プロパティに持っているので、 それを For Each 文で順次取得し、取得されたテキストボックスに対して処理を行います。
Public Class frmPanel3 'パネルの「Enabled」を反転 Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click Me.Panel1.Enabled = Not (Me.Panel1.Enabled) End Sub 'チェックボックスの「Checked」をパネルの「Enabled」に設定 Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged Me.TextBox1.Enabled = Me.CheckBox1.Checked End Sub Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged Me.TextBox2.Enabled = Me.CheckBox2.Checked End Sub Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox3.CheckedChanged Me.TextBox3.Enabled = Me.CheckBox3.Checked End Sub Private Sub CheckBox4_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox4.CheckedChanged Me.TextBox4.Enabled = Me.CheckBox4.Checked End Sub Private Sub CheckBox5_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox5.CheckedChanged Me.TextBox5.Enabled = Me.CheckBox5.Checked End Sub 'パネル上のテキストボックスをクリア Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 'パネルに貼ってある全てのコントロールを取得 For Each obj In Me.Panel1.Controls If TypeOf obj Is TextBox Then 'コントロールが TextBox の場合、Textクリア DirectCast(obj, TextBox).Text = "" End If Next End Sub End Class
これを実行すると以下の様な表示になります。 左側は1個目と2個目、4個目のテキストボックスに値を入力した後で、ボタンをクリックしてパネルを Disabled にした状態です。
その後、「Panel 上の TextBox クリア」のボタンをクリックした様子が右側の図となります。
関連する記事
⇒標準コントロールのパネルの使い方について2(複数Panelの表示切替)⇒パネル上にピクチャボックスを貼付て画像スクロールさせる方法ついて(Panel、PictureBox)
コメント