在表单c#中获取焦点文本框的名称

时间:2017-08-31 06:31:52

标签: c# textbox focus

首先,我知道可能有更好的解决方案,我非常愿意听取这些解决方案。我在互联网上搜索这样的问题,但是找不到一个有效的方法。我在表单上有多个文本框,当用户单击文本框时,我运行一个方法找出哪个文本框是聚焦的,获取该文本框的标记,文本框的名称都作为字符串(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行实际上没有必要的代码。提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

首先,您可以使用密码而不是自动屏蔽的TextBox,如果我理解您的要求,则无法看到。

第二件事是艾因伍德在评论中说,你可以将文本框的所有点击或聚焦事件指向一个方法。事件处理程序方法有两个参数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
}