画面コードの作成
最後に画面に連結するためのコードをMainForm.vbに記述しましょう。
Public Class MainForm Private ViewModel As New MainViewModel Private Me_BindingSource As New BindingSource Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles Me.Load Me.Result_DataGridView.AutoGenerateColumns = False Me.Me_BindingSource.DataSource = ViewModel Me.Result_DataGridView.DataSource = Me.Me_BindingSource Me.Result_DataGridView.DataMember = "Address" End Sub Private Sub Search_Button_Click(sender As Object, e As EventArgs) _ Handles Search_Button.Click Call Me.ViewModel.GetAddress(Me.PostCode_TextBox.Text) End Sub End Class
DataGridViewのAutoGenerateColumnsプロパティは、なぜかプロパティウィンドウで設定できませんが、このプロパティをFalseにしておかないと、事前に設定したColumnsが無視されてデータが表示されてしまうので注意してください。なお、AutoGenerateColumnsプロパティは逆転の発想で最初はTrueにしておいて、どのようなフィールド名でデータが格納しているかを一気に調べることに使うという手もあります。
実行
それでは完成したプロジェクトのプロジェクト構成を確認してみましょう。
クラスを用途別のフォルダに分けることで、かなりすっきりした構成になっていると思います。ビルドでエラーがでないようであればさっそく実行してみましょう。
デフォルトで郵便番号を設定していますので、画面が表示されたら[住所検索]ボタンをクリックしてみてください。
グレープシティ本社の住所が表示できれば正常に動作しています。
WPFアプリで使用する
ツールボックスへの追加
Visual Studioのツールボックスは、タブや登録済コントロールの表示をWindowsフォームアプリとWPFアプリで別になるように制御しています。
そのため、例えばWindowsフォームアプリのプロジェクトでツールボックスに「GrapeCity Win」というタブを作っても、WPFアプリのプロジェクトではそのタブは表示されません。しかしWPF側で「GrapeCity Win」という名前でタブを登録しようとしても、既存チェックにひっかかりタブを作ることができません。
そこで、ツールボックスを右クリックして[タブの追加]を選択し、「GrapeCity WPF」タブを追加します。そして、「GrapeCity WPF」タブの下を右クリックして[アイテムの選択]を選択してダイアログを表示します。
一覧で「GrapeCity.Windows.JPAddress」をチェックして[OK]ボタンをクリックすれば、ツールボックスに追加できます。ここで、Visual Studioを再起動しておくとよいでしょう。