2010-11-25 3 views
0

Datagridview의 특정 열에서 다음 EventHandler를 제한하려고했지만 그렇게하지 못했습니다.Datagridview의 특정 열에서 EventHandler 제한

private void dataGridView1_EditingControlShowing(object sender,  
DataGridViewEditingControlShowingEventArgs e) 
    { 

if (this.dataGridView1.CurrentCell.ColumnIndex==0) 
     { 
      if (e.Control is TextBox) 
      { 
       TextBox dgvEditBox = e.Control as TextBox; 
       dgvEditBox.TextChanged += new EventHandler(dgvEditBox_TextChanged); 

      } 

     } 


    } 



    private void dgvEditBox_TextChanged(object sender, EventArgs e) 
    { 
     //Extract the textbox control 
     TextBox dgvEditBox = (TextBox)sender; 
     // TextBox dgvEditBox = new TextBox(); 

     //Insert the appropriate string 
     if (dgvEditBox.Text.Length == 1) 
     { 
      if (dgvEditBox.Text == "B" || dgvEditBox.Text == "b") 
      { 
       dgvEditBox.Text = "Ball"; 
      } 
     }  
    } 

위의 코드는 "나는 datagridview1의"0 " 열에 "볼 " 텍스트를 넣어하려고하지만 그것이 내가"B "를 누르면

다른 사람에게 같은 컬럼에 영향을 미치지 나 제안 B "는 1 열에서"Ball "을 반환합니다.

나는 싫어. 위의 방법대로 열 "O"까지만 제한 할 수 있습니까?

+0

시도는 columnIndex에 도달하고, (columnIndex에의 == 0) // 말라 마 .. –

+0

@Serkan 헤 케모 글루, 나는 당신을 얻을하지 않습니다 죄송 경우처럼 이벤트 핸들러에서이를 제한 할 수 있습니다. dgvEditBox_textchange에서의 의미 "EventHandler? 어떻게 설명 할 수 있습니까? – mahesh

답변

1

if (dgvEditBox.Text.Length == 1) 블록 외부의 마지막 줄에있는 dgvEditBox_TextChanged에이 값을 추가하십시오.

dgvEditBox.TextChanged -= new EventHandler(dgvEditBox_TextChanged); 
+0

@HPT, 예 멋진 아이디어입니다. EventHandler의 액세스를 취소하십시오. – mahesh