나는이 문제와 관련하여 몇 가지 코드를 가지고 있으므로이 질문을 다시 요청합니다. 이전 질문을 삭제했습니다.DataGridView TextBox 셀 편집, 변경 Tab 키로 활동 키 입력
기본적으로 입력란을 눌러 텍스트 상자 셀을 편집 할 때 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);
}
이 대부분 내가 잠시 동안 작업을 진행하기 위해 노력 해왔다로 I에 유래에서 발견 코드이었다 위의 이벤트를 추가하는 코드입니다.
누군가가 제대로 알 수있는 경우 데이터 입력 창에서 'Enter'키 누르기를 얻는다면 셀을 편집하는 동안 도움이됩니다.
추신 : 나는 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을이에 의해 수행을 시도하고있다.