CodeZine(コードジン)

特集ページ一覧

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2013/01/16 14:00
目次

ロジックコードの記述

 せっかくフォームデザイナに配置した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に表示したい要素を事前に設定しておきます。


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

著者プロフィール

  • 初音玲(ハツネアキラ)

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

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5