[英]Clearing textboxes 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。
如何用一个按钮清除所有3个文本框,而仅用另一个按钮清除所选的文本框?
您的ClearAllTextBoxes_Click
事件处理程序似乎清除了所有三个文本框,因此我将尝试用一个按钮来回答清除的“选定的文本框”。
我在这里看到的问题是所选文本框是什么意思? 这可能意味着聚焦的TextBox(如果启用了文本框,还允许进行编辑,但不是只读的),但是当您转到另一个控件时(即,按下按钮时),焦点就会丢失。
我认为最用户友好的方法是在每个文本框旁边都有一个清除按钮,然后按该按钮将清除该特定文本框。 为了使您的UI尽可能整洁,该按钮不应包含文本,而应包含图像。 选中此以获取有关执行此操作的更多详细信息。
另外,由于您有三个文本框,并且这个数字将来可能会增加,因此您可以考虑创建一个自定义控件,例如“ ClearableTextBox
”。 该控件可以简单地具有一个TextBox和一个带有能够清除TextBox的图像的按钮。 在此处可以找到有关如何创建这样的自定义控件(实际上是一个复合控件,因为您只是将标准控件放在一起)的更多信息。
这是一种方法:
现在有一些代码:
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.