2010-11-25 20 views
0

J'ai essayé de restreindre EventHandler After dans des colonnes spécifiques de Datagridview mais je ne parviens pas à le faire.Restreindre EventHandler dans des colonnes spécifiques de Datagridview

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"; 
      } 
     }  
    } 

Le code ci-dessus suggère que je suis en train de mettre « Ball » texte dans de dataGridView1 « 0 » colonne mais il est

affectent d'autres colonnes comme si je presse « b » ou « B "sur les colonnes 1 que c'est aussi retourner" Ball "sur les colonnes 1.

Ce que je ne veux pas. Est-il possible de le restreindre aux colonnes "O" seulement comme ci-dessus?

+0

essayer d'atteindre columnIndex et limiter dans eventHandler comme si (columnIndex == 0) // Do .. Dont –

+0

@Serkan Hekimoglu, Désolé, je ne vous donne pas. votre moyen dans dgvEditBox_textchange "EventHandler? .. Comment? .. Pouvez-vous expliquer en détail s'il vous plaît. – mahesh

Répondre

1

ajouter ceci à la fonction dgvEditBox_TextChanged à la dernière ligne à l'extérieur du bloc if (dgvEditBox.Text.Length == 1);

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

@HPT, Oui C'est l'idée brillante.Pour révoquer l'accès de EventHandler.Votre-venue. – mahesh