2012-10-27 6 views
2

셀을 편집 모드로 설정하려고합니다. 셀이 새 행 (NewRowIndex)에 있습니다. Everwhere 다른 잘 작동하지만 NewRowIndex에서 편집 모드를 설정하려고하면 편집 모드가되지 않습니다. 간단히 말해 사용자가 새 행 (NewRowIndex)을 입력하면 첫 번째 셀이 편집 모드로 전환됩니다. 나는 (RowEnter에) 시도했다 :datagridview가 자동으로 새 행을 시작했습니다.

dgvList.CurrentCell = dgvList["myColName", dgvList.NewRowIndex]; dgvList.BeginEdit(true);

감사합니다!

+0

왜 처음에는 newrowindex를 다 다루고 있습니까? 새 행을 보통 행으로 편집하고 편집하십시오 – nawfal

+0

새 행을 일반 행으로 처리하면 무슨 뜻입니까? newrowindex는 사용자가 새 행을 입력 할 때만 편집 모드가 트리거되어야하기 때문에 다루고 있습니다. 무슨 뜻인지 보여주는 코드를 게시 해 주시겠습니까? 고마워! (추신 : Excel에서와 같은 것 - 당신이 Enter를 누르면 커서가 다음 행으로 이동하고 쓰기를 시작하면 편집 모드로 들어갑니다) – FreewareFire

+0

이미 코드를 게시했습니다. 두 번째 코드 블록을 참조하십시오. excel에서 Enter 키를 누르면 다음 행으로 점프 만되고 편집 모드에서는 셀을 만들지 않습니다. 입력을 시작했을 때만 편집 모드가됩니다. 그래서 당신은 dgv 입력 이벤트를 전혀 사용할 필요가 없습니다 .. – nawfal

답변

3

저는 실제로 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); 
} 
+0

지옥 예! 고마워요! 때로는 가장 간단한 솔루션이 효과적 일 때도 있습니다. 나는 이번에 CellEnter 이벤트에 대해 생각해 본 적이 없다! – FreewareFire

+0

@FreewareFire 내가 RowEnter를 사용하고 있다는 것을 눈치 채지 못했습니다. CellEnter는 올바른 이벤트입니다. – nawfal

+0

예, RowEnter가 아닌 CellEnter에서 주요 문제라고 생각합니다 :) 감사합니다 !! – FreewareFire