Enter キーを押して編集を確定したとき、CellValidating イベントでセルの編集状態を維持する方法

文書番号 : 26215     文書種別 : 使用方法     最終更新日 : 2008/09/09
文書を印刷する
対象製品
MultiRow for Windows Forms 5.0J
詳細
次のように GcMultiRow.CellValidating イベントの引数でキャンセルを有効にしたとき、MultiRow は DataGridView と異なる結果を示す場合があります。

[Visual Basic]
Private Sub GcMultiRow1_CellValidating(ByVal sender As System.Object, ByVal e As GrapeCity.Win.MultiRow.CellValidatingEventArgs) Handles GcMultiRow1.CellValidating
  e.Cancel = True
End Sub


[C#]
private void gcMultiRow1_CellValidating(object sender, GrapeCity.Win.MultiRow.CellValidatingEventArgs e)
{
  e.Cancel = true;
}


マウス操作でセルを移動する場合、GcMultiRow と DataGridView の両方でセルの編集状態が維持されます。しかし、キーボード操作、Enter キーによる確定を行った場合、DataGridView ではセルの編集状態が維持されますが、GcMultiRow ではセルの編集が確定し、以降のセル移動が禁止されます。
これは、それぞれのコントロールの Enter キーに割り当てられている機能の違いが原因です。DataGridView では Enter キーはセルの移動に割り当てられていますが、GcMultiRow では既定では「セル編集の確定」に割り当てられています。
このため、次のように GcMultiRow の Enter キーをセルの移動に割り当てると、DataGridView と同じ結果を実装できます。

[Visual Basic]
Imports GrapeCity.Win.MultiRow

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  GcMultiRow1.ShortcutKeyManager.Unregister(Keys.Enter)
  GcMultiRow1.ShortcutKeyManager.Register(SelectionActions.MoveToNextCell, Keys.Enter)
End Sub


[C#]
using GrapeCity.Win.MultiRow;

private void Form1_Load(object sender, EventArgs e)
{
  gcMultiRow1.ShortcutKeyManager.Unregister(Keys.Enter);
  gcMultiRow1.ShortcutKeyManager.Register(SelectionActions.MoveToNextCell, Keys.Enter);
}

この文書は、以前は次のFAQ IDで公開されていました : 11455