質問

私はDataGridViewの上の複数のセルの編集をサポートしようとしています。私はそれを正しくコピー編集が行われている他のセルへのコンテンツとして、ほぼ完了しています。私は今働いている何を押された最初のキーをキャプチャされます。

私はEditOnKeystrokeOrF2が正常に動作します使用して、ただ一つのセルを編集していた場合。複数のセルが選択されている場合しかし、私は、KeyDownイベントをキャプチャし、手動にBeginEditを呼び出しています。私はそれを行うと、しかし、押されたキーは、編集には含まれていません。

どのように私は、最初のキーが私のセル内に圧入することを得ることができますか?

役に立ちましたか?

解決

私はいくつかの追加の実験を行なったし、これを実現するための方法を発見しました。それは少しずさんであるが、それは動作します。

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のいくつかの他の処理を行うが、それはこれの残りの部分には関係ありません。

他のヒント

は、処理されなかったキーをマークするのに十分であるかもしれませます。

private void dataGridView_KeyDown(Object sender, KeyEventArgs keyEventArgs)
{
   keyEventArgs.Handled = false;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top