簡體   English   中英

以表單C#獲取焦點文本框的名稱

[英]Get the name of a focused textbox in a form c#

首先,我知道可能有更好的解決方案,我非常願意聽聽這些解決方案。 我已經在互聯網上搜索了類似的問題,但至今仍找不到一個可行的問題。 我在一個窗體上有多個文本框,當用戶單擊文本框時,我運行一種方法,該方法找出焦點位於哪個文本框,獲取該文本框的標簽和文本框的名稱均為字符串(TextboxX和test)。 我的目標是用例如“電子郵件”遮蓋文本框,並且當用戶單擊文本框時,文本框的前景色變為黑色,並且文本框的文本為null,並使用盡可能少的代碼。 這是我為此的代碼。

public void masked()
    {
        if (textboxX.Text == test)
            {
                textboxX.ForeColor = Color.Black;
                textboxX.Text = "";
            }
            else
            {
                textboxX.Select(0, textboxX.Text.Length);
            }          
    }

單擊文本框時,這是當前操作。

private void txtSignup_email_Click(object sender, EventArgs e)
    {
        textboxX = txtSignup_email;
        test = "Email";
        masked();
    }

原因是我有7個文本框,這將為我節省大約14行的代碼,而這實際上是不必要的。 提前致謝。

好,有些事情可以做得更好。

首先,您可以使用密碼而不是自動屏蔽的文本框,如果我正確理解您的要求就無法看到它。

第二件事是ainwood在評論中所說的,您可以將文本框的所有單擊或集中事件都指向一個方法。 事件處理程序方法具有兩個參數sendere 前者是object類型,顯示在您可以轉換的情況下誰調用了此方法,並將其作為TextBox進行調用。 強制轉換操作如下:

var textBox = sender as TextBox;
if (textBox != null)
{
    //Do what you want with textBox here
}

另外,如果您使用新的C#7,則可以這樣做(內部沒有什么不同,只是更好地閱讀):

if (sender is TextBox textBox)
{
    //Do what you want with textBox here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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