方法 : Calendar Web サーバー コントロールにおける日付選択に応答する
更新 : 2007 年 11 月
Calendar コントロールの SelectionMode プロパティの値が None 以外の場合、ユーザーは特定の日付または日付の範囲を指定できます。ユーザーの選択内容を調べたり、ユーザーの選択に応答したりできます。
日付選択に応答するには
Calendar コントロールの SelectionChanged イベントを処理するメソッドを作成します。メソッドには次のシグネチャを記述します。
Private Sub Calendar1_SelectionChanged(ByVal sender _ As System.Object, ByVal e As System.EventArgs) _ Handles Calendar1.SelectionChanged
private void Calendar1_SelectionChanged (object sender, System.EventArgs e)
メモ : このイベントが発生するのは、コントロール内でユーザーのアクションによって日付選択が変更されたときだけです。たとえば、ユーザーが同じ日付を 2 回クリックしても、2 回目のクリックではイベントが発生しません。また、日付の範囲をプログラムで指定した場合も、このイベントは発生しません。
日付選択の情報を使用するためのプロパティを次に示します。
プロパティ |
説明 |
---|---|
特定の日付。ユーザーが特定の日付を選択すると、選択した日付がこのプロパティに格納されます。ユーザーが複数の日付を選択すると、このプロパティには選択範囲の最初の日付が格納されます。 |
|
選択したすべての日付を格納するコレクション。このコレクションに格納された日付は、重複せずに並べ替えられます。Calendar コントロールでは、連続しない複数の日付を選択できません。そのため、このコレクションには連続した日付が格納されます。 |
選択された日数を調べるには
次の例に示すように、SelectedDates コレクションの Count プロパティの値を取得します。
Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Calendar1.SelectionChanged Text1.Text = "You selected " _ & Calendar1.SelectedDates.Count.ToString() _ & " date(s)." End Sub
private void Calendar1_SelectionChanged (object sender, System.EventArgs e) { Text1.Text = String.Format("You selected {0} date(s).", Calendar1.SelectedDates.Count); }
複数の日付が選択されている場合は、その選択範囲を取得できます。
複数の日付が選択されているときに、選択範囲を取得するには
SelectedDates プロパティの Count プロパティを使用して、選択された日付の数を取得します。
コレクションの最初の日付を取得した後で、インデックス番号 -1 の日付を抽出することで最後の日付を取得します。ページ上のテキスト ボックス コントロールの最初の日付と最後の日付を次の例に示します。
Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Calendar1.SelectionChanged With Calendar1.SelectedDates If .Count > 1 Then Dim firstDate As Date = .Item(0).Date Dim lastDate As Date = .Item(.Count - 1).Date TextBox1.Text = firstDate.ToString() TextBox2.Text = lastDate.ToString() End If End With End Sub
private void Calendar1_SelectionChanged (object sender, System.EventArgs e) { SelectedDatesCollection theDates = Calendar1.SelectedDates; if (theDates.Count > 1) { DateTime firstDate = theDates[0]; DateTime lastDate = theDates[theDates.Count-1]; TextBox1.Text = firstDate.ToString(); TextBox2.Text = lastDate.ToString(); } }
複数の日付が選択されているときに、日数を取得するには
TimeSpan オブジェクトを作成し、SelectedDates コレクションに格納された最初の日と最後の日の差をこのオブジェクトに設定し、TimeSpan オブジェクトの Days プロパティを取得します。
Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged With Calendar1.SelectedDates Dim days As Integer Dim firstDate As Date = .Item(0).Date Dim lastDate As Date = .Item(.Count - 1).Date ' The Subtract method returns a TimeSpan object. days = lastDate.Subtract(firstDate).Days + 1 TextBox1.Text = "You have selected " & days.ToString() & " day(s)." End With End Sub
private void Calendar1_SelectionChanged (object sender, System.EventArgs e) { SelectedDatesCollection theDates = Calendar1.SelectedDates; TimeSpan timeSpan = theDates[theDates.Count-1] - theDates[0]; TextBox1.Text = String.Format("You have selected {0} day(s).", timeSpan.Days + 1); }
参照
処理手順
方法 : Calendar Web サーバー コントロールでプログラムによって日付を選択する