首先,我知道可能有更好的解决方案,我非常愿意听取这些解决方案。我在互联网上搜索这样的问题,但是找不到一个有效的方法。我在表单上有多个文本框,当用户单击文本框时,我运行一个方法找出哪个文本框是聚焦的,获取该文本框的标记,文本框的名称都作为字符串(TextboxX和test)。我的目标是掩盖文本框,例如“电子邮件”和“电子邮件”。当用户点击文本框时,文本框前景变为黑色,文本框文本为空,尽可能少的代码。 这是我的代码。
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行实际上没有必要的代码。提前谢谢。
答案 0 :(得分:2)
好的,有一些事情可以做得更好。
首先,您可以使用密码而不是自动屏蔽的TextBox,如果我理解您的要求,则无法看到。
第二件事是艾因伍德在评论中说,你可以将文本框的所有点击或聚焦事件指向一个方法。事件处理程序方法有两个参数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
}