저는 실제로 NewRowIndex
속성을 사용해야한다고 생각하지 않습니다. 이 세포는 새로운 행을 편집 모드로 가고 싶은 경우에,
private void dgvList_CellEnter(object sender, DataGridViewCellEventArgs e)
{
dgvList.CurrentCell = dgvList[e.ColumnIndex, e.RowIndex];
dgvList.BeginEdit(true);
}
: : 그냥 현재 셀을 설정하여 편집을 시작
private void dgvList_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != dgvList.NewRowIndex)
return;
dgvList.CurrentCell = dgvList[e.ColumnIndex, e.RowIndex];
dgvList.BeginEdit(true);
}
편집 : 새 행을 원하는 경우 keydown시 편집 모드로 시작하려면 datagridview에 이미 사용할 수있는 기능입니다. 수동으로 다음과 같이 설정할 수 있습니다 : 당신이 세포는 새로운 행을에서 KeyDown에 편집 모드로 할 경우, 기본 동작을 재정의해야합니다
dgvList.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
//or
dgvList.EditMode = DataGridViewEditMode.EditOnKeystroke;
, KeyDown
이벤트를 후킹하여, 내가 생각하는 GUI를하는 나쁜 방법입니다. 이렇게 될 수 있습니다 :
초기화 : 기본값을 대체 할 수 dgvList.EditMode = DataGridViewEditMode.EditOnF2; //or whatever you prefer
가 키 입력에 따라 스타일 편집을 엑셀. 그리고 나서
private void dgvList_KeyDown(object sender, KeyEventArgs e)
{
if (dgvList.CurrentCell.RowIndex != dgvList.NewRowIndex)
return;
dgvList.BeginEdit(true);
}
왜 처음에는 newrowindex를 다 다루고 있습니까? 새 행을 보통 행으로 편집하고 편집하십시오 – nawfal
새 행을 일반 행으로 처리하면 무슨 뜻입니까? newrowindex는 사용자가 새 행을 입력 할 때만 편집 모드가 트리거되어야하기 때문에 다루고 있습니다. 무슨 뜻인지 보여주는 코드를 게시 해 주시겠습니까? 고마워! (추신 : Excel에서와 같은 것 - 당신이 Enter를 누르면 커서가 다음 행으로 이동하고 쓰기를 시작하면 편집 모드로 들어갑니다) – FreewareFire
이미 코드를 게시했습니다. 두 번째 코드 블록을 참조하십시오. excel에서 Enter 키를 누르면 다음 행으로 점프 만되고 편집 모드에서는 셀을 만들지 않습니다. 입력을 시작했을 때만 편집 모드가됩니다. 그래서 당신은 dgv 입력 이벤트를 전혀 사용할 필요가 없습니다 .. – nawfal