SHOEISHA iD

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

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

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

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

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

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

連結用クラスの作成

 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ならではの修飾を加えていってみましょう。

次のページ
セル、行、列エディタの実行

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(SPREAD)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング