GcCalendarGridコントロールはEditModeプロパティで編集モードを設定できます。
通常モードは、セルの選択とセルの編集の2つの状態を持ちます。既定では、ユーザーがセルに入力するかセルをダブルクリックしたときに入力が開始されます。[Enter] キーを押すか、他のセルに移動すると入力が確定します。このモードは Excel や DataGridView コントロールに似ています。通常モードはGcCalendarコントロールの既定の編集モードです。
GcCalendarGrid1.EditMode = GrapeCity.Win.CalendarGrid.CalendarEditMode.EditOnShortcutKey
gcCalendarGrid1.EditMode = GrapeCity.Win.CalendarGrid.CalendarEditMode.EditOnShortcutKey;
常時入力モードは、セルを常に編集状態にします。このモードは、TextBoxコントロールに似ています。ユーザーはセルに移動した後、ただちにセルを編集できます。
GcCalendarGrid1.EditMode = GrapeCity.Win.CalendarGrid.CalendarEditMode.EditOnEnter
gcCalendarGrid1.EditMode = GrapeCity.Win.CalendarGrid.CalendarEditMode.EditOnEnter;
注意
|
開発者はショートカット キーの設定に関係なく、コーディングでセルの編集を開始できます。ただし、CalendarGridが読み取り専用であったり、セルが読み取り専用の場合、セル型が編集をサポートしていない場合はセルの編集を開始することはできません。
Imports GrapeCity.Win.CalendarGrid Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim today As DateTime = DateTime.Today GcCalendarGrid1.Focus() GcCalendarGrid1.CurrentCellPosition = New CalendarCellPosition(today, 1, 0) GcCalendarGrid1.BeginEdit(False) End Sub
using GrapeCity.Win.CalendarGrid; private void button1_Click(object sender, EventArgs e) { var today = DateTime.Today; gcCalendarGrid1.Focus(); gcCalendarGrid1.CurrentCellPosition = new CalendarCellPosition(today, 1, 0); gcCalendarGrid1.BeginEdit(false); }
編集結果の確定にはGcCalendarGrid.EndEditメソッドを使用します。編集結果のキャンセルにはGcCalendarGrid.CancelEditメソッドを使用します。編集結果を明示的にデータソースに反映(コミット)するにはGcCalendarGrid.CommitEditメソッドを使用します。
開発者はショートカット キーのアクションを直接実行してセルの編集を開始することもできます。
GcCalendarGrid1.Focus() GrapeCity.Win.CalendarGrid.CalendarGridActions.BeginEdit.Execute(GcCalendarGrid1)
gcCalendarGrid1.Focus(); GrapeCity.Win.CalendarGrid.CalendarGridActions.BeginEdit.Execute(gcCalendarGrid1);
GcCalendarGrid.BeginEditメソッドで編集を開始した場合、はGcCalendarGrid.CellBeginEditイベントのCalendarCellBeginEditEventArgs.BeginEditReasonプロパティの値はProgrammaticallyとなり、開発者による編集であることを確認できます。一方、ショートカットキーのアクションを実行した場合は、CalendarCellBeginEditEventArgs.BeginEditReasonプロパティの値はShortcutKeyとなります。コードによる実行と、ユーザー操作のシミュレートがそれぞれ区別されることがわかります。
GcCalendarGrid.CellBeginEditイベントのCalendarCellBeginEditEventArgs.Cancelプロパティを使用すると、セルが編集モードに入るかどうかを制御できます。たとえば、セルの値に応じて編集を許可するかどうかを指定できます。
Imports GrapeCity.Win.CalendarGrid Private Sub GcCalendarGrid1_CellBeginEdit(sender As Object, e As CalendarCellBeginEditEventArgs) Handles GcCalendarGrid1.CellBeginEdit Dim cell As CalendarCell = GcCalendarGrid1(e.CellPosition.Date)(e.CellPosition.RowIndex, e.CellPosition.ColumnIndex) If (cell.Value = Nothing) Then Return ElseIf cell.Value.ToString() = "A" Then ' セルに"A"が設定されている場合は編集をキャンセルします。 e.Cancel = True End If End Sub
using GrapeCity.Win.CalendarGrid; private void gcCalendarGrid1_CellBeginEdit(object sender, GrapeCity.Win.CalendarGrid.CalendarCellBeginEditEventArgs e) { CalendarCell cell = gcCalendarGrid1[e.CellPosition.Date][e.CellPosition.RowIndex, e.CellPosition.ColumnIndex]; if (cell.Value == null) { return; } else if (cell.Value.ToString() == "A") { // セルに"A"が設定されている場合は編集をキャンセルします。 e.Cancel = true; } }
セルが編集状態であるかどうかは、GcCalendarGrid.IsCurrentCellInEditModeプロパティで取得できます。