所以我有:
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个文本框,只用另一个按钮清除选择?
答案 0 :(得分:0)
您的ClearAllTextBoxes_Click
事件处理程序似乎清除了所有三个文本框,因此我将尝试使用一个按钮回答清除的“选定文本框”。
我在这里看到的问题是你选择的文本框是什么意思?它可能意味着聚焦TextBox(如果启用也允许编辑而不是只读),但是当你转到另一个控件时(即按下按钮时)焦点会丢失。
我认为最用户友好的方法是在每个文本框旁边都有一个清除按钮,推送它将清除该特定文本框。为了使您的UI尽可能干净,该按钮不应包含文本,而应包含图像。有关执行此操作的详细信息,请查看this。
此外,由于您有三个文本框,并且将来这个数字可能会增长,您可以考虑创建自定义控件,例如“ClearableTextBox
”。该控件可以简单地具有TextBox和具有能够清除TextBox的图像的按钮。有关如何创建此类自定义控件的更多信息(实际上是一个复合的控件,因为您只需将标准控件放在一起)可以找到here。
答案 1 :(得分:0)
以这种方式:
现在有些代码:
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;
}
}