CodeZine(コードジン)

特集ページ一覧

「SPREAD for Windows Forms 7.0J」の新機能に迫る

グレープシティのフラグシップコンポーネントがWindows 8/Visual Studio 2012に対応

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

連結用クラスの作成

 ViewModelsフォルダには、MainViewModelクラスを定義します。このクラスが最終的に画面とバインディングします。

リスト3 MainViewModelクラスの定義
Imports System.ComponentModel
Imports System.Collections.ObjectModel
 
Public Class MainViewModel
    Implements INotifyPropertyChanged
 
    Private WithEvents Model As New ConecoModel
 
    Public ReadOnly Property Items As List(Of ConecoContext)
        Get
            Return Me.Model.Items
        End Get
    End Property
 
    Public Event PropertyChanged(sender As Object,
                                 e As PropertyChangedEventArgs) _
                             Implements INotifyPropertyChanged.PropertyChanged
 
    Private Sub Model_PropertyChanged(sender As Object,
                                      e As PropertyChangedEventArgs) _
                                          Handles Model.PropertyChanged
        RaiseEvent PropertyChanged(Me,
                                   New PropertyChangedEventArgs(e.PropertyName))
    End Sub
 
    Public Sub GetItemsCommand(ByVal parameter As String)
        Me.Model.GetItems(parameter)
    End Sub
End Class

データ自動表示

 それでは、SPREADに単純にMainViewModelクラスをバインディングしてみましょう。

 MainForm.vbでは、ConecoModelと連結したMainViewModelをDataContextに割り当てるコードだけが必要です。

リスト4 MainForm.vbの内容
Imports System.ComponentModel
 
Public Class MainForm
    Private WithEvents ViewModel As New MainViewModel
 
    Private Sub Me_Load(sender As Object, e As EventArgs) Handles Me.Load
        Me.Cursor = Cursors.WaitCursor
        Me.ViewModel.GetItemsCommand("")
    End Sub
 
    Private Sub ViewModel_PropertyChanged(sender As Object,
                                          e As PropertyChangedEventArgs) _
                                      Handles ViewModel.PropertyChanged
        Me.FpSpread1.DataSource = Me.ViewModel.Items
        Me.Result_Sheet.AutoGenerateColumns = True
        Me.Cursor = Cursors.Default
    End Sub
End Class

 このサンプルでは、.NET Framework 4.5で追加になった非同期待ち合わせのAsync-Awaitを使っているため、「Me.ViewModel.GetItemsCommand("")」の実行直後はまだ値が設定されていません。値が設定されるのは、PropertyChangedイベントでItemsプロパティが変更されたのが通知されてからになります。

 そのため遅い回線でサンプルを実行した場合は、画面が表示された後、しばらくしてから検索結果が表示されます。

実行結果

 SPREADのデザイン側にはまだ何も設定はしていませんが、この状態でどのような表示になるか確認してみましょう。

図5 実行結果
図5 実行結果

 SPREADは高機能なので、使うのが大変だという先入観を持ってしまう人もいるかもしれません。しかし、表示用のListの内容をそのまま表示するのであれば、SPREAD自体に設定は不要となります。ですから将来的に複雑な修飾が出来るように、可能であればシンプルな用途のときから、「表といえばSPREAD」というようにSPREADを使って画面をつくっていくのが得策です。

 それではこのシンプルな表示から、SPREADならではの修飾を加えていってみましょう。


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

バックナンバー

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

もっと読む

著者プロフィール

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

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

あなたにオススメ

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