2012-03-15 2 views
1

내 DataGrid에는 두 개의 텍스트 상자 열과 두 개의 버튼 열이 있습니다. 사용자가 버튼을 클릭하면 인접한 텍스트 상자 셀이 편집 모드로 바뀌고 커서가 거기에 놓이게됩니다.DataGridViewTextBoxColumn, 셀 내용의 시작 부분에 커서를 설정하십시오.

내 텍스트 상자 열은 읽기 전용 모드입니다.

그래서 나는 셀 코드가 나는 오류가 발생하지 오전하지만 내 목표는 충족되지

private void dgView_CellEnter(object sender, DataGridViewCellEventArgs e) 
    { 
     if (e.RowIndex == 2) 
     { 
      DataGridView dgv = (DataGridView)sender; 
      DataGridViewTextBoxCell textBoxCell = dgv.CurrentCell as DataGridViewTextBoxCell; 
      if (textBoxCell != null) 
      { 
       dgv.BeginEdit(true); 
      } 
     } 
    } 

것을 입력 썼다. 텍스트 상자 셀이 편집 모드에 있지 않고 커서가 텍스트 상자 셀에 배치되어 있지 않습니다. 그러니 제발 말해서 제 코드를 수정해서 버튼을 클릭하면 옆에있는 텍스트 상자 셀이 편집 모드로 바뀌고 커서가 깜박 거립니다.

답변

2

CellClick 이벤트를 사용해보십시오. u는 내 코드를 해결 plzz 수

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { 
     if (e.RowIndex == 2) { 
      DataGridView dgv = (DataGridView)sender; 
      DataGridViewCell textBoxCell = dgv.Rows[e.RowIndex].Cells[col_index]; 
      if (textBoxCell != null) { 
       dataGridView1.CurrentCell = textBoxCell; 
       dgv.BeginEdit(true); 
      } 
     } 
    } 
+0

나는 "SetCurrentCellAddressCore 함수에 대한 재 호출 호출로 인해 연산이 유효하지 않습니다."라는 오류가 발생합니다. dataGridView1.CurrentCell = textBoxCell 행의 경우; – Thomas

+0

'CellEnter' 이벤트를 사용했지만 위에서 말한 것처럼'CellClick'을 사용하려고하면 오류가 발생합니다 – ionden

+0

한 실수를했습니다 ... 이제 괜찮습니다. 감사 – Thomas

2

먼저 포커스를 그리드에 설정하고 다음으로 현재 셀을 설정하십시오.

dgv.Focus() = true; 
dgv.CurrentCell = dgv[0,2]; 

다음은 위의 코드를 사용하는 예입니다

private void dgView_CellEnter(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.RowIndex == 2) 
    { 
     DataGridView dgv = (DataGridView)sender; 
     DataGridViewTextBoxCell textBoxCell = dgv.CurrentCell as DataGridViewTextBoxCell; 
     if (textBoxCell != null) 
     { 
      dgv.BeginEdit(true); 
      dgv.Focus() = true; 
      int col = e.ColumnIndex; 
      dgv.CurrentCell = dgv[2,col]; 
     } 
    } 
} 
+0

: 당신은 정말 Focus() 그냥 CurrentCellBeginEdit를 설정 호출 할 필요는 없습니다. – Thomas

+0

@ 토마스 : 알겠습니다. 내 대답을 편집했습니다. 내가 더 도울 수 있다면 알려줘. – msigman

+0

"SetCurrentCellAddressCore 함수에 대한 재 호출 호출로 인해 작업이 유효하지 않습니다."라는 오류가 발생합니다. dgv.CurrentCell = dgv [2, col] 라인의 경우; – Thomas

0

개인 무효 dataGridView1_CellMouseEnter (개체를 보낸 사람, DataGridViewCellEventArgs 전자) {

var dataGridView = (sender as DataGridView); 

if (e.ColumnIndex == "Your desire column index here") 
{ 
      dataGridView.Cursor = Cursors.Hand; 
} 
else 
{ 
      dataGridView.Cursor = Cursors.Default; 
} 
관련 문제