簡體   English   中英

清除文本框C#

[英]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的圖像的按鈕。 此處可以找到有關如何創建這樣的自定義控件(實際上是一個復合控件,因為您只是將標准控件放在一起)的更多信息。

這是一種方法:

  1. 在您的窗體中放置一個私有變量,以記住最后一個被選中的文本框(也稱為焦點)。
  2. 將您希望能夠執行“清除選中”的所有文本框連接到“ Enter”事件。
  3. 輸入事件發生時,將私有變量的值設置為觸發事件的發送者。
  4. 當您單擊“清除選定的內容”時,只需對最后選定的項目調用.Clear()方法。

現在有一些代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM