FlexGrid では、マウスクリックまたはキーボードを使用して、実行時に編集モードを起動できます。グリッドが編集モードかどうかをプログラムによって判定するには、Editor プロパティの値を読み取ります。 グリッドが編集モードの場合、このプロパティは、エディタとして使用されている TextBox、ComboBox などのコントロールへの参照を返します。一方、グリッドが編集モードでない場合、このプロパティは null を返します。
プログラムによってグリッドを編集モードにするには、StartEditing メソッドを使用し、編集を終了するには、FinishEditing メソッドを呼び出します。また、PreserveEditMode プロパティを使用すると、セル間を移動している間も編集モードの状態を維持できます。
さらに、FlexGrid は、さまざまなイベントを発生させることで、編集プロセスに対して適切な制御を簡単に行えるようにしています。編集プロセス中にグリッドから発生する一連のイベントを次の表にリストします。
イベント名 | 説明 |
---|---|
BeforeEdit | このイベントは、編集可能なセルが選択されるたびに発生します。このイベントの Cancel パラメータを true に設定することで、セルの編集を禁止することができます。また、ComboList プロパティを変更して、適切なドロップダウンボタンをセル内に描画することもできます。ただし、このイベントの後にユーザーが実際に編集を開始せず、単に別のセルまたはコントロールに選択が移動することもあります。 |
StartEdit | このイベントは BeforeEdit に似ていますが、ユーザーが実際にキー入力を行うかセル内のドロップダウンボタンをクリックして、実際に編集を開始しようとしている点が異なります。この段階では、まだ編集を取り消すことができます。この時点では、コントロールが使用するエディタタイプがまだ決まらないため、Editor プロパティが null であることに注意してください。この段階で、Editor プロパティにカスタムエディタを割り当てることができます。 |
ChangeEdit | このイベントは、editor.TextChanged イベントのラッパーです。このイベントは、エディタの内容が変更されたときに発生します。このイベントを使用して、エディタの現在の内容を追跡することができます。 |
SetupEditor | このイベントは、エディタコントロールが作成され、セルを編集するように構成された後で、表示される前に発生します。この段階で、エディタのプロパティを変更できます(たとえば、TextBox エディタで使用する最大長、パスワード文字などを設定できます)。独自のイベントハンドラをエディタにアタッチすることもできます。 |
ValidateEdit | このイベントは、ユーザーが編集を完了したときに、エディタの値がグリッドにコピーされる前に発生します。グリッドから元の値を取得して、その値を調べることができます(このイベントは、セルの座標を提供します)。Editor のプロパティ(Editor.Text など)を使用して、グリッドに割り当てられようとしている新しい値を調べることができます。新しい値がセルに対して有効でない場合は、Cancel パラメータを true に設定すると、グリッドは編集モードのままになります。セルを編集モードのままにするのではなく、元の値を復元して編集モードを終了する場合は、Cancel パラメータを true に設定し、さらに FinishEditing メソッドを呼び出します。 |
LeaveEdit | このイベントは、グリッドコントロールが編集モードを終了した後に発生します。このイベントを使用して、新しいセルコンテンツを承認または拒否したり、コミットされようとしているエディタの内容を変更できます。 |
AfterEdit | このイベントは、新しい値がセルに適用され、エディタが非アクティブ化された後に発生します。このイベントを使用して、セルの値に依存しているすべての項目(小計、ソートなど)を更新できます。 |
また、キーボード操作に関連付けられ、キーが押されると発生するイベントがいくつかあります。これらのイベントは、グリッドが編集モードのときに発生すること以外は、System.Windows.Forms.Control クラスの対応するイベントと同じです。
イベント | 説明 |
---|---|
KeyDownEdit | このイベントは、グリッドが編集モードのときに、キーが押されると発生します。このイベントを使用すると、アクションを 1 回実行したり、カーソルを移動する場合など、キーが押されたままのときには複数回のアクションを実行することができます。 |
KeyPressEdit | このイベントは、グリッドが編集モードのときに、文字キーが押されると発生します。このイベントを使用して、キー入力に関連する操作(セルエディタ内の入力の処理など)を実行できます。 |
KeyUpEdit | このイベントは、グリッドが編集モードのときに、キーが放されると発生します。このイベントを使用して、KeypressEdit ロジックが適用された後に実行するロジックを置くことができます。 |