Visual Basicに関する世界観3(フォームデザイナー)です。
VisualBasic2010逆引き大全555の極意を参考にしています。
VBでは、フォームデザイナーを使うことで、直観的にWindowsフォームアプリケーションを開発することができる。
GUIのコントロールをRAD(ポトペタとも呼ばれる)で配置することができ、コントロールのプロパティを変えれば画面上に反映される。このため、Visualという名前の通り、実際のフォーム画面をイメージしながら開発することができる。
Visual Basicでは、イベント駆動によるプログラミングを行う。プログラムはmain()関数から実行するのとは違い、イベントごとに設定したイベントプロシージャを開発することでプログラムを開発し、イベント駆動で実行出来る。
これは、メッセージループを行うC言語のWindows APIを使う場合や、OnDraw()などのクラスを継承・オーバーライドしてドキュメント・ビュー・アーキテクチャで開発するMFCなどよりも、簡単で、便利で、そして美しいコードになる。
Visual Basicは、こうしたイベント駆動アプリケーションの開発環境としては草分け的な存在である。ライバルに、Object Pascal言語を用いるDelphiがある。
最近では、Windowsフォームアプリケーションから一歩進んで、XML(XAML)でGUIを記述するWPFをMSは開発しているが、Windowsフォームがあまりに好まれているため、普及は進んでいないようである。
VBによるイベント駆動のコードが実際にどのようになるのかは、以下のリンクが参考になる。
イベント駆動も参照のこと。
たとえば、Button1.Clickイベントに登録されるButton1_Click()プロシージャの記述は以下のようになる。
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 'Button1がクリックされた時の処理 End Sub
このようなプロシージャは、フォームエディタでフォーム上に新しいボタンButton1を配置し、配置したボタンをダブルクリックすると自動で追加される。
「Handles Button1.Click」はイベントハンドラとの関連付けのために必要。もしAddHandlerで自分でイベントハンドラとの関連づけを行う場合は、Handles~は書かなくて構わない。
(VisualBasic2010パーフェクトマスター (Perfect Master SERIES)を参考に執筆しました。)
VisualBasic2010逆引き大全555の極意を参考に執筆しました。
VB.NETでは、以下のようなコントロールを利用できる。
コントロール | 説明 |
---|---|
Label | ラベル |
LinkLabel | リンク付きラベル |
Button | ボタン |
TextBox | テキストボックス |
CheckBox | チェックボックス 複数の選択肢を複数選ぶ。 |
RadioButton | ラジオボタン 複数の選択肢からひとつを選ぶ。 |
GroupBox | グループボックス 中にRadioButtonなどを配置できる。 |
PictureBox | 画像ボックス |
ListBox | リストボックス |
CheckedListBox | チェック付きリストボックス |
ComboBox | コンボボックス 一覧をドロップダウン式で表示できる。 |
TabControl | タブ付きコントロール |
DateTimePicker | 日付・時間 |
MonthCalendar | カレンダー |
Timer | タイマ |
MenuStript | メニューバー |
ContextMenuStrip | コンテキストメニュー |
ToolStrip | ツールバー |
StatusStrip | ステータスバー |
ToolStripContainer | ツールバーのコンテナ(移動式) |
ProgressBar | プログレスバー |
TreeView | ツリービュー |
ListView | リストビュー |
RichTextBox | リッチなテキストボックス |
NumericUpDown | スピンボタン |
Panel | パネル |
WebBrowser | Webブラウザ |
このほか、エクスプローラーフォーム(TreeViewコントロール、ListViewコントロールとナビゲーションの機能を持つ、エクスプローラー形式のフォーム)などが利用できる。
実行時にコントロールを追加するには、
New コントロール名()
でコントロールを作成し、
コンテナー名.Controls.Add(オブジェクト名)
で追加する。削除はControls.Remove()メソッドを使う。
たとえば、
Me.Controls.Add(Me.Button1)
Meは自分自身のインスタンスを指すキーワード。ここではForm1などから呼び出されることを想定している。Me.ControlsやMe.Button1のMeはフォーム自身であるForm1のインスタンスを指す。
実行時に追加したコントロールにイベントハンドラを作成するには、
AddHandler コントロール名.イベント, AddressOf イベントハンドラ
で設定する。
たとえば、Button1.ClickイベントにButton1_Click()プロシージャを登録するには以下のようにする。
AddHandler Me.Button1.Click, AddressOf Button1_Click
これで、ボタンButton1がクリックされた時に、Button1_Click()プロシージャの内容を実行させることができる。
詳しくは以下の書籍・ページが参考になります。
それぞれのコントロールの詳細については.NETも参照のこと。
以下の書籍が参考になります。
GUIの開発全般についてはGUI開発を参照のこと。