ユーザーインターフェイス(1)
コントロールのプロパティとメソッドこれまでにも、コントロールのプロパティについては、さんざん取り上げてきた。
通常では、「My Project」と「Form1.vb」しか見えないが、
小さなアイコン「すべて表示」をクリックし、「Form1.vb」を展開すれば、
「Form1.Designer.vb」を選択できるようになる。
これをクリックすると、Form1.Designer.vbの内容を見ることができる。
form1.Designer.vbの内容には、
。
このように、単純なVBプログラムには、「隠された」ファイルが数多く存在する。
それらは互いに依存関係にあり、全体像がわかるまで、このようなファイルをいじったりすると訳がわからなくなる。
しかし、プログラム実行中にオブジェクト=コントロールを動的に生成するために大いに参考になる。
VB.Netには、あらかじめ定義されているオブジェクトがある。これはクラスと呼ばれ、例えば
System.Windows.Forms.Button
は「ボタン」コントロールのクラスとなっている。
クラスはあるオブジェクトを生成するための設計図であるといってよい。
Dim a as System.Windows.Forms.Button
とかやり、
a= new System.Windows.Forms.Button
とかやることで、クラスはインスタンス化(設計図から実体化)され、自由に使えることになる。
クラスにはプロパティとメソッド、イベントを定義することができる。
大雑把に言えば、クラスとは「人間」の概念である。
この場合、クラスのプロパティは、例えば「点呼番号」「体重」「身長」「名前」などであり、
クラスのメソッドとは、例えば「走れ」「目立て」などとなる。イベントは「殴られた」「名指しされた」とかとか。
クラスをインスタンス化するとは、「人間」の型から、個別の人間「山田一郎」とか「和田アキ子」を生成することとなる。
それぞれ、プロパティ「点呼番号」「体重」「身長」「名前」が個別に設定可能であり、メソッド「走れ」「目立て」が個別に実行可能である。
「和田アキ子」を殴ったら、イベント「殴られた」が発生する。
コントロール=インスタンスのプロパティとメソッドの例を挙げる。
TabIndexプロパティ
ほとんどのコントロールには、TabIndexプロパティがついている。
フォームデザイナで、コントロールを配置すると、配置されたコントロールのTabIndexプロパティは配置順に0,1,2・・と設定される。
このTabIndexの値により、実行時、Tabキーでフォーカスを移動していくことができる。
よってTabIndexプロパティに整数を設定することで、TABキーでコントロールのフォーカスをコントロールできる。
なお、enabled=Falseなコントロールに対してはフォーカスは自動的にスル―される。
Focus()メソッド
モジュール内で、あるコントロールに強制的にフォーカスを与えることができる。
TextBox1.Focus()
コントロールTextBox1にフォーカスを与える。
ユーザー入力の補助的な役割をするコントロールに、ラジオボタン とチェックボックス、コンボボックスがある。今回は、これらのコントロールを用いて example1に、ユーザーインターフェイスを構築する。
コントロールのグループ化
ラジオボタンは同一グループの中で一つの項目を選択できる。 ラジオボタン等のコントロールをグループ化するのがグループボックスである。 通常、コントロールはフォーム上に貼り付けていくが、 フォーム上にグループボックスを貼り付け、その上にコントロールを貼り付けることができる。 これにより、コントロールをグループ化することができる。 フレームも同じ用途に使用することができる。
|
|
チェックボックスやラジオボタンがチェックされているかは、コントロールの Checked プロパティで調べることができる。
下の例では、chkMaleをチェックボックス名としている。
If chkMale.Checked = True Then ..... Else ..... End If |
逆に、次のようなコードで、チェックボックスのチェック状態を変更することができる。
チェックボックスのチェック状態をオンにする |
これまで、生年月日の入力にはテキストボックスを使用してきた。 今回はこれを「コンボボックス」に変更する。
![]() |
![]() |
「チェックボックス」「ラジオボタン」と大きく異なるのは、プロパティの設定である。「コンボボックス」の場合は、表示される選択肢をあらかじめ設定しておかなくてはならない。
例として、「月」用のコンボボックスの設定を示す。
コンボボックスへの項目の設定はプロパティでおこなう。
![]() |
対象となるコンボボックスのプロパティウィンドウを開く。 Itemsプロパティをダブルクリックするとアイテム入力ウィンドウが現れるので、必要なアイテムを入力する。 |
ユーザーがコンボボックスで何を選択したかを調べるには、プログラム上でSelectedItemプロパティを調べればよい。
Private btnNenrei_Click(...) Dim Month As Integer Month = Cint(cmbMonth.SelectedItem) ..... End Sub |
通常、コンボボックスのSelectedItemプロパティは文字列型であるので、 上ではCint()関数を用いて、強制的に整数型に変換している。
これまでは、フォームにはりつけるコントロールはフォームデザイナでおこなってきた。
しかし、プログラム実行時に、コントロールの設定をおこなうことも可能である。
このためにはプロシージャForm1_Load ()でコントロールの設定をおこなう。
重要 |
フォームデザイナ上で、コンボボックスComboBox1にアイテムを追加するのと等価なコマンドは、
ComboBox1.Items.Add("アイテム名")
である。
厳密に言えば、ComboBox1はクラスComboBoxのインスタンスである。クラスComboBoxはitemsプロパティを持つ。
itemsプロパティは実際にはクラスComboBox.ObjectCollectionのインスタンスであり、メソッドAdd()を持つ。
したがって、例えば「月」用のコンボボックスの設定は以下のようにおこなう。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ComboBox1.Items.Add(1) ComboBox1.Items.Add(2) ComboBox1.Items.Add(3) ComboBox1.Items.Add(4) ComboBox1.Items.Add(5) ComboBox1.Items.Add(6) ComboBox1.Items.Add(7) ComboBox1.Items.Add(8) ComboBox1.Items.Add(9) ComboBox1.Items.Add(10) ComboBox1.Items.Add(11) ComboBox1.Items.Add(12) End Sub |
For〜Next文を使って以下のようにするとプログラムがすっきりしてよいかもしれない。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim IndexNumber As Integer For IndexNumber = 1 To 12 ComboBox1.Items.Add(IndexNumber) Next IndexNumber End Sub |
上の例では、IndexNumberを1から12まで変化させながら、ComboBox1.Items.Add(IndexNumber)を実行させている。
課題N06 |