1

datagridviewで複数のセルの編集をサポートしようとしています。編集が完了すると内容が他のセルに正しくコピーされるので、ほぼ完成です。私が今取り組んでいるのは、最初に押されたキーをキャプチャすることです。

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

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

4

2 に答える 2

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を数値にするために他の処理を行いますが、それはこれ以外の部分には関係ありません。

于 2009-04-20T19:23:38.377 に答える
0

キーを未処理としてマークするだけで十分な場合があります。

private void dataGridView_KeyDown(Object sender, KeyEventArgs keyEventArgs)
{
   keyEventArgs.Handled = false;
}
于 2009-04-20T15:54:02.903 に答える