SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(JPAddress)

データ最新化まで含めた総合ソリューション型 住所検索コンポーネント「JPAddress for .NET 1.0」

  • このエントリーをはてなブックマークに追加

ロジックコードの記述

 せっかくフォームデザイナに配置したJPAddressですが、今回のサンプルではデザインとロジックを分離したいので、さくっとフォームデザイナ上からアイコンを削除して、ロジック記述用のJPAddressModel.vbを作成して、そこでコードを使ってJPAddressを使ってみたいと思います。

 Visual StudioのソリューションエクスプローラーでModelsフォルダを作成し、Modelsフォルダを右クリックして[追加]‐[クラス]メニューでクラスファイルを追加します。

 クラスファイルには次のようなコードを記述します。

リスト1 JPAddressModel.vb
Imports GrapeCity.Win.JPAddress
Imports System.ComponentModel

Public Class JPAddressModel
    Implements INotifyPropertyChanged

    Private _Address As List(Of AddressInfo)
    Public Property Address As List(Of AddressInfo)
        Get
            Return Me._Address
        End Get
        Set(value As List(Of AddressInfo))
            Me._Address = value
            Call NotifyPropertyChanged("Address")
        End Set
    End Property

    Public Sub GetAddress(postCode As String)
        Me.Address = (New GcJPAddress).GetAddress(postCode, True).ToList
    End Sub

    Public Event PropertyChanged(sender As Object,
                     e As PropertyChangedEventArgs) _
                 Implements INotifyPropertyChanged.PropertyChanged

    Private Sub NotifyPropertyChanged(ByVal propertyName As String)
        RaiseEvent PropertyChanged(Me,
                                   New PropertyChangedEventArgs(propertyName))
    End Sub
End Class

 JPAddressの使い方は非常に簡単で、実際に郵便番号から住所を検索しているのは、GetAddressメソッドの中の次の1行です。

Me.Address = (New GcJPAddress).GetAddress(postCode, True).ToList

 これでAddressプロパティに住所が設定されることになります。郵便番号から住所を検索したとき、複数の結果が返ってくる場合があります。そのためJPAddressでの検索結果もIEnumerable型になっています。ここでは画面との連結を考えてToListを使ってListに変換しています。

 それでは次に、Addressプロパティを画面に連結するためのクラスをつくりましょう。

画面連結用クラスの作成

 ソリューションエクスプローラーでViewModelsフォルダを作成し、フォルダ上で右クリックをして[追加]‐[クラス]メニューを選択して、MainViewModelクラスファイルを作成します。JPAddressModelのPublicなプロパティ、メソッド、イベントをそのままPublicで公開すればいいのでコードは次のようになります。

リスト2 MainViewModel.vb
Imports System.ComponentModel
Imports GrapeCity.Win.JPAddress

Public Class MainViewModel
    Implements INotifyPropertyChanged

    Private WithEvents VmModel As New JPAddressModel

    Public ReadOnly Property Address As List(Of AddressInfo)
        Get
            Return Me.VmModel.Address
        End Get
    End Property

    Public Sub GetAddress(postCode)
        Call Me.VmModel.GetAddress(postCode)
    End Sub

    Public Event PropertyChanged(sender As Object,
                 e As PropertyChangedEventArgs) _
             Implements INotifyPropertyChanged.PropertyChanged

    Private Sub VmModel_PropertyChanged(sender As Object,
                                        e As PropertyChangedEventArgs) _
                                    Handles VmModel.PropertyChanged
        RaiseEvent PropertyChanged(Me,
                                   New PropertyChangedEventArgs(e.PropertyName))
    End Sub
End Class

画面の作成

 今回のサンプルでは、郵便番号欄、検索ボタン、検索結果一覧という画面構成にします。

図5 画面構成
図5 画面構成

 一覧部分はDataGridViewを採用し、Columnsに表示したい要素を事前に設定しておきます。

次のページ
WPFアプリで使用する

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6942 2016/03/29 17:41

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング