既定では空欄のセルにはユーザーが任意の値を入力できます。入力を開始する方法は次のとおりです。
コーディングによってセルに値を入力するには、CalendarCell.Valueプロパティに値を設定します。
GcCalendarGrid1.SetValue(DateTime.Today, 1, 0, "Hello")
gcCalendarGrid1.SetValue(DateTime.Today, 1, 0, "Hello");
または
Imports GrapeCity.Win.CalendarGrid Dim today As DateTime = DateTime.Today GcCalendarGrid1.Content(today).Rows(1).Cells(0).Value = "Hello"
using GrapeCity.Win.CalendarGrid; var today = DateTime.Today; gcCalendarGrid1.Content[today].Rows[1].Cells[0].Value = "Hello";
編集中のセルには、セル編集コントロールが表示されます。たとえば、CalendarTextBoxCellTypeの場合はTextBoxEditingControlが対応します。
セル編集コントロールには、GcCalendarGrid.EditingControlプロパティやGcCalendarGrid.EditingControlShowingイベントを通してアクセスできます。
次のコードは、編集確定時にセルの編集前の値と編集中の値を比較します。
Imports GrapeCity.Win.CalendarGrid Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim today As DateTime = DateTime.Today Dim textBoxCellType As New CalendarTextBoxCellType() GcCalendarGrid1.Content(today).Rows(1).Cells(0).CellType = textBoxCellType GcCalendarGrid1.Content(today).Rows(1).Cells(0).CellStyle.BackColor = Color.Azure GcCalendarGrid1.ScrollIntoView(today) End Sub Private Sub GcCalendarGrid1_CellValidating(sender As Object, e As GrapeCity.Win.CalendarGrid.CalendarCellValidatingEventArgs) Handles GcCalendarGrid1.CellValidating Dim gcCalendarGrid As GcCalendarGrid = DirectCast(sender, GcCalendarGrid) If TypeOf gcCalendarGrid.Content(e.CellPosition.Date).Rows(e.CellPosition.RowIndex).Cells(e.CellPosition.ColumnIndex).CellType Is CalendarTextBoxCellType Then Dim beforeEdit As Object = gcCalendarGrid.Content(e.CellPosition.Date).Rows(e.CellPosition.RowIndex).Cells(e.CellPosition.ColumnIndex).Value If (beforeEdit IsNot Nothing) Then Console.WriteLine("編集前の値:{0}", beforeEdit.ToString()) Else Console.WriteLine("編集前の値:(なし)") End If If gcCalendarGrid.EditingControl IsNot Nothing Then Console.WriteLine("編集中の値:{0}", gcCalendarGrid.EditingControl.Text) Else Console.WriteLine("編集中の値:(なし)") End If Else Console.WriteLine("現在のセルはTextBox型ではありません") End If End Sub
using GrapeCity.Win.CalendarGrid; private void Form1_Load(object sender, EventArgs e) { var today = DateTime.Today; var textBoxCellType = new CalendarTextBoxCellType(); gcCalendarGrid1.Content[today].Rows[1].Cells[0].CellType = textBoxCellType; gcCalendarGrid1.Content[today].Rows[1].Cells[0].CellStyle.BackColor = Color.Azure; gcCalendarGrid1.ScrollIntoView(today); gcCalendarGrid1.CellValidating += gcCalendarGrid1_CellValidating; } void gcCalendarGrid1_CellValidating(object sender, CalendarCellValidatingEventArgs e) { var gcCalendarGrid = sender as GcCalendarGrid; if (gcCalendarGrid.Content[e.CellPosition.Date].Rows[e.CellPosition.RowIndex].Cells[e.CellPosition.ColumnIndex].CellType is CalendarTextBoxCellType) { object beforeEdit = gcCalendarGrid.Content[e.CellPosition.Date].Rows[e.CellPosition.RowIndex].Cells[e.CellPosition.ColumnIndex].Value; if (beforeEdit != null) { Console.WriteLine("編集前の値:{0}", beforeEdit.ToString()); } else { Console.WriteLine("編集前の値:(なし)"); } if (gcCalendarGrid.EditingControl != null) { Console.WriteLine("編集中の値:{0}", gcCalendarGrid.EditingControl.Text); } else { Console.WriteLine("編集中の値:(なし)"); } } else { Console.WriteLine("現在のセルはTextBox型ではありません"); } }
GcCalendarGrid.AutoGenerateCellTypeプロパティがTrueの場合、CalendarGridは入力されたデータ型に応じて最適なセル型を自動的に表示します。
データ型 |
表示されるセル型 |
---|---|
TimeSpan |
CalendarGcTimeSpanCellType |
Boolean |
CalendarCheckBoxCellType |
ImageまたはIcon |
CalendarImageCellType |
DateTime |
CalendarGcDateTimeCellType |
Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Decimal, Single, Double |
CalendarGcNumberCellType |
nullまたはその他の型 |
CalendarTextBoxCellType |