執筆者: インフラジスティックス・ジャパン株式会社 池原 大然

動作確認環境: Visual Studio 2010、.NET Framework 2.0、Windows 7 Ultimate 64 bit


アプリケーションの開発規模や画面数によっては複数のコントロールを 1 つにまとめたものを再利用し開発効率を上げることができます。Windows フォームでは標準で提供されているコントロールのほか、System.Windows.Forms.UserControl コントロールを用いて複数のコントロールをまとめることが可能になっています。

  1. Windows フォーム アプリケーション コントロール ライブラリ プロジェクトを作成し名前を "CodeRecipe_ControlLibrary_VB"、ソリューション名を "CodeRecipe_UserControl_VB" と設定します。

    図 1

  2. プロジェクトには既定で UserControl1 が追加されており、デザイン画面にはコントロール領域にツール ボックスからコントロールを追加することが可能です。

    図 2

  3. このユーザー コントロールには DateTimePicker コントロール、Button コントロールを追加します。

    図 3

  4. コード ビハインドでこの UserControl 独自のプロパティである、DateTime 型の BirthDate プロパティを実装します。その際に DefaultValueAttribute を設定し、既定値を設定することが可能です。また、計算ボタンクリック時に BirthDate と DateTimePicker で選択した日付の経過日数を表示させるロジックを記述します。

    Visual Basic
    Public Class UserControl1 
     
        Sub New() 
     
            InitializeComponent() 
            ' プロパティの初期値を設定 
            Me._birthDate = New DateTime(200011) 
     
        End Sub 
     
        ' BirthDate プロパティを設定 
        Private _birthDate As DateTime 
        <System.ComponentModel.DefaultValue(GetType(DateTime), "2000/01/01")> 
        Public Property BirthDate() As DateTime 
            Get 
                Return _birthDate 
            End Get 
            Set(ByVal value As DateTime) 
                _birthDate = value 
            End Set 
        End Property 
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
            ' 差分を表示 
            MessageBox.Show( _ 
                String.Format("誕生日から {0} 日経過しています。", _ 
               (Me.DateTimePicker1.Value - BirthDate).Days)) 
        End Sub 
    End Class 
     
    
  5. 次にこのコントロールをホストする Windows フォーム アプリケーションプロジェクトを "CodeRecipe_UserControl_VB" と名前を付けて作成します。なお、Windows フォーム アプリケーションの作成方法については [VB] Windows フォームによるクライアント アプリケーション開発を参照してください。

    図 4

  6. Form1 のデザイナー画面を開き、Label, DateTimePicker, そして先ほど作成した UserControl1 コントロールを追加します。

    図 5

  7. Form1 の [設定] ボタンのクリック ハンドラーでは UserControl1.BirthDate プロパティに値を設定します。

    Visual Basic
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click 
        Me.UserControl11.BirthDate = Me.DateTimePicker1.Value 
    End Sub 
     
    

    CodeRecipe_UserControl_VB をスタートアップ プロジェクトに設定したのちの実行結果は下記の通りです。

    図 6

    上下の DatePicker で設定した日付の差分が表示されます。このフォームの下半分がパーツ化されたことになります。

関連リンク


Code Recipe Windows デベロッパー センター

ページのトップへ