Silverlight をインストールするには、ここをクリックします*
Japan変更|すべてのMicrosoft のサイト|サインイン
MSDN
|MSDN ライブラリ|デベロッパー センター|ダウンロード情報|開発ツール製品|コミュニティ|ご意見・ご要望|サイトマップ
MSDN Home > ステップ 7 > Visual Studio 2005 による分散アプリケーション開発編 > 第 4 回 プレゼンテーション層の開発 - その 2 : Windows アプリケーション開発

ステップ 7 ハンズオン 「Visual Studio 2005 による分散アプリケーション開発編」

第 4 回 プレゼンテーション層の開発 - その 2

Windows アプリケーション開発

マイクロソフト株式会社 デベロッパー&プラットフォーム統括本部
エバンジェリスト 辻郷 隆史

最終更新日 2006 年 1 月 25 日

目標 Visual Studio 2005 による Windows アプリケーション開発
使用技術
  • Visual Studio 2005 / Visual Basic 2005
  • .NET Framework 2.0 / Windows Form 2.0
取り上げるトピックス
  • Web サービスの利用方法
  • Windows アプリケーションの作成方法
前提知識
関連記事

Windows アプリケーション開発

今回実装する Windows アプリケーションとしては、「第 3 回 ビジネス層の開発」で作成したサービス コンポーネントを使用します。

図 1. サンプル アプリケーション / Windows アプリケーション

Windows アプリケーション内に "SessionEntry" クラスを作成し、 Web サービスを利用および認証情報の設定を行います。

これらを使用し、各処理を実装します。

実装する処理SessionEntry クラスWeb サービス.メソッド
セッションリスト参照処理GetEntrySessionEntry.GetEntry
セッション参加登録処理UpdateEntrySessionEntry.UpdateEntry

前回のハンズオンにて作成した、サンプル アプリケーション用ソリューション "Event2005" を開きます。

Visual Studio 2005 を起動し、メニューより [ ファイル ] - [ 開く ] - [ プロジェクト/ソリューション ] の順に選択後、対象のソリューションファイル "Event2005.sln" を開きます。

ソリューションへ Windows アプリケーション用のプロジェクト "EventUIWin" を追加します。

メニューより [ ファイル ] - [ 追加 ] - [ 新しいプロジェクト ] の順に選択します。

[ 新しいプロジェクトの追加 ] ダイアログにて、 "EventUIWin" プロジェクトを作成します。

プロジェクトの種類テンプレートプロジェクト名
Visual Basic - WindowsWindows アプリケーションEventUIWin

図 2. プロジェクト "EventUIWin" の追加

なお、デフォルトで作成される "Form1.vb" は使用しないため削除します。

EventUIWin プロジェクトから、「第 3 回 ビジネス層の開発」 で作成した、 "SessionEntry" Webサービスを参照します。

メニューより [ プロジェクト ] - [ Web 参照の追加 ] を選択します。

[ Web 参照の追加 ] ダイアログにて、[ このソリューションの Web サービス ] を選択後、 "SessionEntry" サービスを選択します。

図 3. Web サービス "SessionEntry" への参照の追加

Web 参照名へ "SessionEntryWS" を入力後、 [ 参照の追加 ] ボタンをクリックします。

図 4.Web 参照 "SessionEntryWS" の追加

Windows アプリケーション "EventUIWin" へクラス "SessionEntry" を追加し、セッションリスト参照処理およびセッション参加登録処理のコードを実装します。

メニューより [ プロジェクト ] - [ クラスの追加 ] の順に選択後、クラス "SessionEntry"を追加します。

テンプレートファイル名
クラスSessionEntry..vb

図 5. クラス "SessionEntry" の追加

まず始めに、認証情報として使用する NetworkCredential クラスを使用する、下記の赤字のコードを記述します。

Public Class SessionEntry
    ' 認証情報
    Private nc As System.Net.NetworkCredential

    Public Sub New()
        ' 認証情報設定
        nc = New System.Net.NetworkCredential("user01", パスワード)
    End Sub
End Class

認証情報として使用する NetworkCredential クラスを Private フィールドとして宣言し、コンストラクタ内にてWeb サービスの認証情報へ基本認証を行うためのユーザー名およびパスワードを設定します。

※ユーザー名およびパスワードについては、 今回のサンプル用に認証専用のユーザーを作成するなど Web サービスが動作するマシンで認証が可能な任意のユーザー名およびパスワードを設定ください。

次に、"GetEntry" メソッドおよびメソッドコードを実装します。

Public Class SessionEntry
    …
    Public Function GetEntry(ByVal EventID As Integer) As SessionEntryWS.SessionEntryDataSet
        Dim ds As New SessionEntryWS.SessionEntryDataSet()
        Dim se As New SessionEntryWS.SessionEntry()
        ' 認証情報設定
        se.Credentials = nc
        ' セッションリスト取得
        ds = se.GetEntry(EventID)
        ' 取得したデータセットを返す
        Return ds
    End Function
End Class

認証情報を設定した後、 Web メソッド "GetEntry" よりセッションリストを取得し "SessinoEntryDataSet" を返します。

更に、セッション参加登録処理である "UpdateEntry" メソッドおよびメソッドコードを実装します。

Public Class SessionEntry
    …
    Public Function UpdateEntry(ByVal ds As SessionEntryWS.SessionEntryDataSet) As Integer
        Dim se As New SessionEntryWS.SessionEntry()
        ' 認証情報設定
        se.Credentials = nc
        ' セッション参加登録
        Return se.UpdateEntry(ds)
    End Function
End Class

認証情報を設定した後、 Web メソッド "UpdateEntry" にてセッション参加登録を行い、戻り値をそのまま呼び出し元へ返します。

次のステップ以降で本クラスを使用するため、 "SessionEnrty.vb" ファイルを一度保存します。 ( メニュー [ファイル] - [App_Code/SessionEntry.vb の保存])

Windows フォームのデザインおよびデータ連結の設定を行います。

まずは、Windows フォーム "SessionEntryForm" を追加します。

メニューより [ プロジェクト ] - [ Windos フォームの追加 ] の順に選択後、Windows フォーム "SessionEntryForm" を追加します。

テンプレートファイル名
Windows フォームSessionEntryForm.vb

図 6. Windows フォーム "SessionEntryForm" の追加

追加した Windows フォーム "SessionEntryForm" へ、下記の通りコントロールを配置します。

  • BindingNavigator コントロール ×1
  • Button コントロール ×2
  • DataGridView コントロール ×1
  • BindingSource コントロール ×1

Windows フォームのデザインなどについては、 「10 行でズバリ !! Windows フォームによるクライアント アプリケーション開発 (VB)」を参照ください。

図 7. Windows フォーム "SessionEntryForm" デザイン

なお、配置したコントロールへ以下の設定を行います。

  • Button コントロールの Text プロパティへ "参照" "登録" を設定
  • BindingNavigator コントロール内の 新規追加 (AddNewItem) / 削除 (DeleteItem) ToolStripButton コントロールの削除

図 8. Windows フォーム "SessionEntryForm" コントロール調整

次に、 DataSet コンポーネント (ツールボックス / データタブ内) を配置し、型指定されたデータセットより Web サービスにて公開されている "SessionEntryDataSet" を選択します。

図 9. データセット "SessionEntryDataSet" の追加

更に、配置したコントロールの各プロパティを設定し、データソースを設定行います。

コントロールプロパティ設定値
BindingSource1DataSource他のデータベース
- SessionEntryForm 一覧インスタンス
-- SessionEntryDataSet1
DataMemberSessionEntry
BindingNavigator1BindingSourceBindingSource1
DataGridView1DataSourceBindingSource1

最後に、 DataGridView の列の設定を行い "EventID" と "ProfileID" 列を非表示に設定します。

配置した DataGridView のスマート タグをクリックし、 [ 列の編集 ] をクリックします。

[ 列の編集 ] ダイアログにて、 "EventID" および "ProfileID" 列のプロパティ "Visible" を "False" に設定します。

図 10. 非表示列の設定

以上で、 Windows フォームのデザインおよびデータ連結の設定が完了しました。

図 11. Windows フォーム "SessionEntryForm"

Step 4 にて追加したクラス "SessionEntry" を使用し、各ボタンのボタン クリック イベントにて、セッションリスト参照処理およびセッション参加登録処理を実施します。

まず始めに Button1 ("参照") コントロールをダブルクリックし、イベント ハンドラとして下記の赤字のコードを実装します。

Private Sub Button1_Click(…) Handles Button1.Click
    Dim obj As New SessionEntry()
    Me.SessionEntryDataSet1 = obj.GetEntry(2)
    Me.BindingSource1.DataSource = Me.SessionEntryDataSet1
End Sub

SessionEntry オブジェクトを作成後、 "GetEntry" にて新しいセッションリストのデータセットを取得し、 "SessionEntryDataSet1" および "BindingSource1.DataSource" へその参照を再設定します。

次に Button2 ("登録") コントロールをダブルクリックし、イベント ハンドラとして下記の赤字のコードを実装します。

Private Sub Button2_Click(…) Handles Button2.Click
    Dim status As Integer
    Dim obj As New SessionEntry()
    ' データ検証および編集操作の終了 
    Me.Validate()
    Me.BindingSource1.EndEdit()
    status = obj.UpdateEntry(Me.SessionEntryDataSet1)
    ' ステータスによるメッセージボックス表示
    Select Case status
        Case 0
            MessageBox.Show("更新完了")
        Case 1
            MessageBox.Show("その他エラー", "エラー", _
                MessageBoxButtons.OK, MessageBoxIcon.Error)
        Case 2
            MessageBox.Show("同時実行制御エラー", "エラー", _
                MessageBoxButtons.OK, MessageBoxIcon.Error)
        Case Else
            MessageBox.Show("ステータス エラー", "エラー", _
                MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Select
End Sub

SessionEntry オブジェクトを作成後、 "UpdateEntry" にてセッション参加登録を実施し、戻されたスタータスに応じたメッセージを表示します。なお、編集中のデータ検証および編集内容をデータセットへ反映するコードをデータセットを使用する前に実施します。

以上で、実装は完了です。

作成した Windows アプリケーションから実行させるために "EventUIWin" をスタートアップ プロジェクトへ設定します。

ソリューション エクスプローラ上で、 " EventUIWin" Windows アプリケーションを選択後、メニューより [ プロジェクト ] - [ スタートアップ プロジェクトに設定 ] を選択し、 "EventUIWin" をスタートアップ プロジェクトへ設定します。

更に、 Windows フォーム "SessionEntryForm.vb" をスタート フォームへ設定します。

メニューより [ プロジェクト ] - [ EventUIWin のプロパティ ] を選択し、 "EventUIWin" プロジェクトのプロパティ [ アプリケーション ] タグ- [ スタートアップ フォーム ] の項目にて、 "SessionEntryForm" を設定します。

最後に、 "EventUIWin" をビルドします。

メニューより [ ビルド ] - [ EventUIWin のビルド ] を選択し、正しくビルド出来ることを確認します。

作成した Windows アプリケーションを実行します。

"EventUIWin" の実行 (デバックなしで開始) を実施し、Windows アプリケーションを実行します。

実行後、 "参照" ボタンをクリックすると、セッションリストが表示されます。

図 12. セッションリスト参照

セッションリスト参照については、以下の流れで実施されます。

図 13. セッションリスト参照

次に、任意の行の "Entried" 列のチェックボックスを変更後、"登録" ボタンをクリックすると、セッション参加登録を実施します。

図 14. セッション参加登録

セッション参加登録については、以下の流れで実施されます。

図 15. セッション参加登録

なお、同じセッションに対して編集を行うと例外処理により、同時実行制御エラーが表示されます。

図 16. 同時実行制御エラー

ここまでで、サンプル アプリケーション "イベント 2005" の Windows アプリケーション開発が完了しました。

まとめ

今回の Visual Studio 2005 によるプレゼンテーション層の開発については、下記のものを使用して行いました。

  • ASP.NET 2.0
  • Windows Forms 2.0
  • サービス コンポーネントの利用 (Web 参照による Web サービスの利用)

このように、プレゼンテーション層の開発についても、 Web や Windows など使用するテクノロジーに特化した各種コントロールなどを利用することにより、効率よく開発を行うことが可能です。

また、サービス コンポーネントの利用については、異なるテクノロジーにおいても、 Web 参照を含め同じスタイルで使用することが可能です。

以上で、イベント 2005 プレゼンテーション層の開発は完了となります。


Top of Page Top of Page

Microsoft