3

テキスト列とチェックボックス列を持つ DataGridView があります。ユーザーがチェックボックスをクリックすると、ユーザーにプロンプ​​トが表示されます。以下のコードを使用して、これを機能させました。

private void grid_CurrentCellDirtyStateChanged( object sender, EventArgs e )
{
  var grid = sender as DataGridView;
  if ( grid.IsCurrentCellDirty)
    grid.CommitEdit( DataGridViewDataErrorContexts.Commit );
}

ただし、テキスト列に入力しようとすると、入力が終了したときではなく、入力中にコミットされ続けます。これにより、テキスト セル自体が強調表示され続け、1 文字しか入力できなくなります。チェックボックスの値が変更されたときにのみ処理するようにこのイベントを変更するにはどうすればよいですか?

4

2 に答える 2

2

あなたがする必要があるのは、テキストではなく、チェックボックスだけに注意を払うことです. 同様の問題に対して私が見つけた解決策は、どのフィールドが編集されているかを記録するイベントを CellEnter に置くことでした。次に、ダーティ処理イベントがこれをチェックして、何をすべきかを決定します。

ダーティチェックで座標が利用できない理由は想像できません。

于 2012-06-11T18:34:59.480 に答える
1

私はちょうど同じ問題を抱えていました。特定の列 (CheckBox 列) に注意を払いたい場合は、これでうまくいきます。

private void grid_CurrentCellDirtyStateChanged( object sender, EventArgs e )
{
  var grid = sender as DataGridView;

  if ( grid.IsCurrentCellDirty && grid.CurrentCell.ColumnIndex == 1 )
     grid.CommitEdit( DataGridViewDataErrorContexts.Commit );
}
于 2014-06-05T19:59:15.000 に答える