通过单击按钮清除表单上多个文本框中的文本框

时间:2016-04-16 05:09:07

标签: c#

不确定如何从表单上的多个文本框中选择文本框,并在按钮的单击事件上清除它。例如,如果我们有一个计算器的多个操作数字段并需要实现清除当前字段按钮,我该如何实现它?这是我到目前为止的代码片段。

private void button2_Click(object sender, EventArgs e) 
{ 
   foreach (Control t in this.Controls) 
   { 
      if (t is TextBox) 
      { 
         if (t.Focused) 
         { 
            t.Text = ""; 
         } 
      } 
   } 
}

2 个答案:

答案 0 :(得分:2)

一个选项可能是订阅TextBox LostFocus个事件。

声明一个类字段以保存活动TextBox的引用。

私人TextBox activeTextbox;

Form_Load事件中

订阅TextBox LostFocus事件。

textbox1.LostFocus += (se,ev) => activeTextbox = textbox1;
textbox2.LostFocus += (se,ev) => activeTextbox = textbox2;

现在在按钮click事件

private void button2_Click(object sender, EventArgs e) 
{
     if(activeTextbox != null)
     {
          activeTextbox.Text = "";    
     }

}

答案 1 :(得分:0)

正如Hari Prasad所说,只要用户点击按钮,活动的TextBox就会失去焦点。所以我建议使用Leave事件和一个实例来检测单击按钮之前哪个TextBox处于活动状态。

private TextBox _tmpTextbox;

private void txt1_Leave(object sender, EventArgs e)
{
   _tmpTextbox = txt1;
}

private void txt2_Leave(object sender, EventArgs e)
{
  _tmpTextbox = txt2;
}

按钮:

private void btnTest_Click(object sender, EventArgs e)
{
  _tmpTextbox.Text = "";
}

为了缩短代码,您可以为所有文本框使用一个偶数处理程序:

private void txt1_Leave(object sender, EventArgs e)
{
  TextBox activeTextBox = (TextBox) sender;
  _tmpTextbox = activeTextBox;
}