私は今、私の問題(私は古い質問を削除)に行くいくつかのコードを持っているので、この質問を再請求しています。DataGridView TextBoxセル編集、変更Enterキーのように動作するキー
基本的に、テキストボックスセルの編集中にEnterキーを押すと、Tabキー(次の行の同じ列の代わりに現在の行の次の列)のように機能します。
私の問題は、これまでに試したことのほとんどがうまくいきませんでしたが、これは私の現在試みられている解決策でした。
このコードは、編集/選択中のセルを変更することになっています。
private void PreTranslateDGV_KeyPressEvent(object sender, KeyEventArgs e)
{
DataGridViewTextBoxEditingControl a = (DataGridViewTextBoxEditingControl) sender;
//a.PreviewKeyDown -= PreviewKeyDownEventHandler (dataGridView1_PreviewKeyDown)
MyDataGridView s = (MyDataGridView) a.EditingControlDataGridView;
if (e.KeyCode == Keys.Enter)
{
e.SuppressKeyPress = true;
int newRow;
int newColumn;
if (s.CurrentCell.ColumnIndex == s.ColumnCount - 1) // it's a last column, move to next row;
{
newRow = s.CurrentCell.RowIndex + 1;
newColumn = 0;
if (newRow == s.RowCount)
return; // ADD new row or RETURN (depends of your purposes..)
}
else // just change current column. row is same
{
newRow = s.CurrentCell.RowIndex;
newColumn = s.CurrentCell.ColumnIndex + 1;
}
s.CurrentCell = s.Rows[newRow].Cells[newColumn];
}
}
これは
private void PreTranslateDGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
DataGridViewTextBoxEditingControl tb = (DataGridViewTextBoxEditingControl)e.Control;
tb.KeyDown += new KeyEventHandler (PreTranslateDGV_KeyPressEvent);
}
セルのテキストボックスに上記のイベントを追加したコードであるこのの大半は、私はそれがしばらくの間、働いて取得しようとしてきたように私はStackOverflowのから見つかったコードでした。
誰かが正しい方法を知っている場合は、データグリッドビューから「Enter」キー押しを取得してください。セルを編集中に助けてください。
PS:MSDNフォーラムで読む(リンクが失われています)テキストボックスセルを編集するときにEnterキーを押すと編集が中止されます。上記のコードがなぜEnterキーで起動しないのかを説明しますが、それ以外の場合は起動します。
は、私は今の上に乗って、class MyDataGridView : KryptonDataGridView
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ((keyData == Keys.Enter) && (this.EditingControl != null))
{
return false;
}
//for the rest of the keys, proceed as normal
return base.ProcessCmdKey(ref msg, keyData);
}
}
しかし、関係なく、私は返すように見えるものを、入力していないキーがKeyPressEventに渡されていないprocesscmdkeyこれをすることによって行うことをしようとしています。