2009-04-20 10 views
1

データグリッドビューで複数のセルを編集することをサポートしようとしています。編集が完了したら、内容を他のセルに正しくコピーするので、ほぼ完了しました。私が今作業しているのは、最初に押されたキーをキャプチャすることです。データグリッドビューで複数のセルを編集する際に助けが必要

EditOnKeystrokeOrF2を使用すると、1つのセルだけを編集するときに問題ありません。しかし、複数のセルが選択されている場合は、Keydownイベントをキャプチャして、手動でBeginEditを呼び出します。しかし、私がそれをするとき、押されたキーは編集に含まれていません。

最初のキーをセルに押し込むにはどうすればよいですか?

答えて

1

もう少し実験を行い、これを実現する方法を見つけました。ちょっとうんざりですが、うまくいきます。

private int _keyValue; 
private Boolean _checkKeyValue = false; 

private void Grid1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) 
{ 
    DataGridViewCell cell = Grid1.Rows[e.RowIndex].Cells[e.ColumnIndex]; 

    if (_checkKeyValue) 
    { 
     _checkKeyValue = false; 

     if (value != -1) 
     { 
      cell.Value = _keyValue; 
     } 
    } 
} 

private void Grid1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (Grid1.SelectedCells.Count > 1) 
     { 
      _checkKeyValue = true; 
      _keyValue = (int)e.KeyValue; 
      Grid1.BeginEdit(false); 
     } 
} 

CellBeginEditイベントに登録することで、そこに値を入れることができます。私はそれを数値にするために_keyValueの他の処理を行いますが、それはこれの残りの部分には関係ありません。

0

キーを処理しないとマークすることは十分です。

private void dataGridView_KeyDown(Object sender, KeyEventArgs keyEventArgs) 
{ 
    keyEventArgs.Handled = false; 
} 
+0

これは有望だと思った。しかし、私はそれを試してみると、それは助けにはならなかったし、 "Handled"プロパティがすでに間違っていたように見えました。 –

関連する問題