清除文本框c#

时间:2016-04-02 20:16:26

标签: c#

所以我有:

3个文本框,1清除所有按钮(应清除所有文本框),以及1个清除所选文本框(仅清除所选文本框)。

我该怎么做呢?这是我的代码:

        private void ClearAllTextBox_Click(object sender, EventArgs e)
    {
        foreach (Control c in Controls)
        {
            if (c is TextBox)
            {
                c.Text = "";
            }
        }
    }

我没有发布"清除当前字段"按钮。

这样,第一次按下按钮时,它只清除SecondOperatorTextBox和ResultTextBox。如果我再次单击它,则会清除FirstOperatorTextBox。

我如何用1个按钮清除所有3个文本框,只用另一个按钮清除选择?

2 个答案:

答案 0 :(得分:0)

您的ClearAllTextBoxes_Click事件处理程序似乎清除了所有三个文本框,因此我将尝试使用一个按钮回答清除的“选定文本框”。

我在这里看到的问题是你选择的文本框是什么意思?它可能意味着聚焦TextBox(如果启用也允许编辑而不是只读),但是当你转到另一个控件时(即按下按钮时)焦点会丢失。

我认为最用户友好的方法是在每个文本框旁边都有一个清除按钮,推送它将清除该特定文本框。为了使您的UI尽可能干净,该按钮不应包含文本,而应包含图像。有关执行此操作的详细信息,请查看this

此外,由于您有三个文本框,并且将来这个数字可能会增长,您可以考虑创建自定义控件,例如“ClearableTextBox”。该控件可以简单地具有TextBox和具有能够清除TextBox的图像的按钮。有关如何创建此类自定义控件的更多信息(实际上是一个复合的控件,因为您只需将标准控件放在一起)可以找到here

答案 1 :(得分:0)

以这种方式:

  1. 在表单中放置一个私有变量以记住最后一个TextBox 被选中(a.k.a. focused。)。
  2. 连接您希望能够执行的所有文本框"清除所选的"进入"输入"事件
  3. 当enter事件发生时,将私有变量的值设置为触发事件的发件人。
  4. 当您点击"清除所选项"时,只需对上次选择的项目调用.Clear()方法。
  5. 现在有些代码:

    public partial class MyForm : Form
    {
        private TextBox _lastSelected = null;
    
        public MyForm()
        {
            InitializeComponent();
    
            textBox1.Enter += textBox_Enter;
            textBox2.Enter += textBox_Enter;
            textBox3.Enter += textBox_Enter;
        }
    
        private void buttonClearAll_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
        }
    
        private void buttonClearSelected_Click(object sender, EventArgs e)
        {
            if (_lastSelected == null) return;
    
            _lastSelected.Clear();
        }
    
        private void textBox_Enter(object sender, EventArgs e)
        {
            _lastSelected = (TextBox)sender;
        }
    }