【问题标题】:clearing textbox from multiple textboxes on a form on a click of a button单击按钮从表单上的多个文本框中清除文本框
【发布时间】:2016-04-16 13:35:59
【问题描述】:

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

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

【问题讨论】:

  • 当按钮点击的焦点会移出TextBox所以这段代码不起作用,你必须通过name或者tag找到控件
  • 其实是一个非常简单的程序。只需将两个文本框放在一个表单和一个按钮上。现在尝试通过单击按钮来获取活动文本框。如果我事先知道我想要哪一个,那很容易。如果我不知道,不确定要捕获哪个事件、鼠标离开、聚焦或其他。
  • @HariPrasad,如果我知道这个名字,那就很容易了。问题是我不知道哪个是活动的,这意味着我有焦点或在离开它并单击按钮之前哪个是活动的。不确定标签是如何工作的。
  • @AlexJolig 道歉,在主帖中添加了代码。
  • 看看这是不是你要找的stackoverflow.com/questions/4428100/…

标签: c#


【解决方案1】:

一种选择可能是订阅TextBoxLostFocus 事件。

声明一个类字段来保存活动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 = "";    
     }

}

【讨论】:

  • 太好了,很高兴它有帮助。
  • 最好使用GotFocusenter 事件而不是GotFocus 事件。因为当一个按钮是表单的acceptButton 时,即使另一个文本框处于活动状态,用户也可以通过按 Enter 按钮单击并触发单击事件。
【解决方案2】:

正如 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;
}

【讨论】:

  • 试过了,_tmpTextbox 在按钮点击事件中为空。 :(
  • @SaurabhGupta 您确定在文本框获得焦点后单击了按钮吗? Itried 代码,它工作正常。
  • 是的,我就是这么做的。 :(
  • 不确定这个解决方案有什么问题。不过感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
  • 2013-04-20
  • 2013-01-13
相关资源
最近更新 更多