2014-02-06 47 views
1

我正在制作一个窗体应用程序,其中我使用了一个datagridview。 我想,当我写在文本中datagridview的东西,不是一个消息框出现包含我写的字符串.. ican't让我在TextChanged事件文本..如何从datagridview textchanged事件中的当前单元格中获取文本?

所有的事情必须在TextChanged事件被解雇.. 这里是我的代码: -

void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
     { 
      if (dataGridView1.CurrentCell.ColumnIndex == 1) 
      { 
       TextBox tb = (TextBox)e.Control; 
       tb.TextChanged += new EventHandler(tb_TextChanged); 
      } 
     } 
     void tb_TextChanged(object sender, EventArgs e) 
     { 
      //listBox1.Visible = true; 
      //string firstChar = ""; 
      //this.listBox1.Items.Clear(); 
      //if (dataGridView1.CurrentCell.ColumnIndex == 1) 
      { 
       string str = dataGridView1.CurrentRow.Cells["Column2"].Value.ToString(); 
       if (str != "") 
       { 

        MessageBox.Show(str); 
       } 
      } 

回答

1
void tb_TextChanged(object sender, EventArgs e) 
{ 
    var enteredText = (sender as TextBox).Text 
    ... 
} 
+0

'字符串enteredText =((文本框)发送器)。文本;'是等价的。 – ThunderGr

0

试试看。考虑到控制对象被声明为全局。

Control cnt; 

void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    e.Control.TextChanged +=new EventHandler(tb_TextChanged); 
    cnt=e.Control; 
    cnt.TextChanged +=tb_TextChanged; 
} 

void tb_TextChanged(object sender, EventArgs e) 
{ 
    if(cnt.Text!=string.Empty) 
    { 
     textBox.Text=cnt.Text; 
     MessageBox.Show(textBox.Text); 
    } 
} 
0

显示在TextChangedMessageBox会很烦人。

取而代之,您可以在DataGridView.CellValidated事件中尝试它,该事件在单元格验证完成后触发。

样品的编号:

dataGridView1.CellValidated += new DataGridViewCellEventHandler(dataGridView1_CellValidated); 

void dataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e) 
{ 
    if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null) 
    { 
     MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()); 
    } 
} 
相关问题