SHOEISHA iD

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

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

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

Secure iNetSuite for .NET 4.0Jを最新環境で使ってみる

Windows 8.1+Visual Studio 2013+Secure Mail for.NET 4.0Jの組み合わせを確認

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

画面に表示する情報の定義

 コンポーネントを使う準備ができたならば、画面に表示したい情報や画面での操作に関する処理をMainViewModelクラスに記述します。

 MainViewModelクラスに記述するコードは実際にはもう少し必要ですが、重要な部分だけを抜き出すと次のようになります。

リスト2 MainViewModel
Imports System.Collections.ObjectModel
Imports System.Runtime.CompilerServices
Imports System.ComponentModel

Public Class MainViewModel
    Implements INotifyPropertyChanged
    Private WithEvents Model As New MailModel

    Public Property Items As ObservableCollection(Of MailModel.TMail)
        Get
            Return Me.Model.Items
        End Get
        Set(value As ObservableCollection(Of MailModel.TMail))
            Me.Model.Items = value
        End Set
    End Property

    Public Async Function GetMail() As Task
        Await Me.Model.GetMail()
    End Function

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

 受信メール一覧はItemsプロパティに設定され、一覧を作るためのメソッドがGetMailメソッドとして定義されています。この時点では、まだMailModelクラスの中身は記述していないため、例えば「Me.Model.GetMail()」などと入力するとIDEの即時チェックでコンパイルエラーです。しかし、エラー修正のオプションで「MailModelにGetMailのメソッドスタブを生成」を選択すると、MailModelクラスにPublicメソッドの入り口だけ定義され、コンパイルエラーが解消できます。

画面の定義

 今回のサンプルでは、非常にシンプルな画面構成を採用しています。

図3 画面定義
図3 画面定義

 [一覧受信]をクリックしたら、受信メールの一覧をボタン下のListBoxに表示します。

画面のコードビハインド定義

 画面定義が終わったら、次に画面定義に紐づいたコードを記述します。

 ソリューションエクスプローラーで「MainForm.vb」を右クリックして[コード]メニューを選択すると、MainFormと関連づいたコード(コードビハインド)を記述するためのコードエディタが開きます。

リスト3 MainForm.vbのコード
Public Class MainForm
    Private WithEvents ViewModel As New MainViewModel

    Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles Me.Load
        Me.ListBox1.DrawMode = DrawMode.OwnerDrawVariable
    End Sub

    Private Async Sub Get_Button_Click(sender As Object, e As EventArgs) _
        Handles Get_Button.Click
        Await Me.ViewModel.GetMail()
        Me.ListBox1.DataSource = Me.ViewModel.Items.ToList
    End Sub
                 :
               (中略)
                :

End Class

 Get_Button_Clickイベントプロシージャでは、MainViewModelクラスのGetMailメソッドを非同期待ち合わせで呼び出しています。この非同期待ち合わせ(Await)は、Visual Studio 2012(.NET Framework 4.5)から採用されたもので、UIスレッドへ制御を戻しつつ、GetMailメソッドの実行が完了するまで待ち合わせる動きが可能になります。つまり、Windowsフォームアプリでありがちな、長時間処理実行中にWindowsフォームが真っ白になったり、「応答待ち」表示になったりすることを防止できます。

次のページ
メール受信ロジックの記述

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

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

初音玲(ハツネアキラ)

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング