[英]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.