[英]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在評論中所說的,您可以將文本框的所有單擊或集中事件都指向一個方法。 事件處理程序方法具有兩個參數sender
和e
。 前者是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.