C# 在事件上使用通用的clear textbox方法

C# 在事件上使用通用的clear textbox方法,c#,validation,input,textbox,C#,Validation,Input,Textbox,我有一个程序,里面有很多文本框,我想在点击时被清除,然后如果没有输入任何内容,用户点击离开,则重置为默认值 我要做的方式显然是低效的,每次都要给文本框命名,我想知道如何简化它 这就是我现在得到的,每次我都必须更改文本框字段名的txtUserName private void txtUserName_Click(object sender, EventArgs e) { txtUserName.Text = "" txtUserName.ForeColor = Color.Blac

我有一个程序,里面有很多文本框,我想在点击时被清除,然后如果没有输入任何内容,用户点击离开,则重置为默认值

我要做的方式显然是低效的,每次都要给文本框命名,我想知道如何简化它

这就是我现在得到的,每次我都必须更改文本框字段名的txtUserName

private void txtUserName_Click(object sender, EventArgs e)
{
    txtUserName.Text = ""
    txtUserName.ForeColor = Color.Black;
}
有什么方法我能做到吗

private void txtAnyTextBox_Click(object sender, EventArgs e)
{
    string caller = //Get this textbox name
    this.ClearBoxes(caller)
}

void ClearBoxes(string Caller)
{
    Caller.txt.Text = "";
   //..... and so on
}

您可以从事件的发件人处获取文本框的名称:

private void txtAnyTextBox_Click(object sender, EventArgs e)
{
    TextBox textBox = (TextBox)sender;
    string caller = textBox.Name;
    this.ClearBoxes(caller); // call your custom method
}
如果只想清除文本框文本,则无需获取其名称-可以使用它的清除方法:

您也可以考虑创建自定义文本框,该文本框会有一些默认值,当单击时,它会怨恨自己:默认值:

public class CustomTextBox : TextBox
{
    public string DefaultText { get; set; }

    protected override void OnClick(EventArgs e)
    {
        base.OnClick(e);
        Text = DefaultText;
    }
}

使用自定义文本框而不是默认文本框,并为每个自定义文本框提供默认文本值,这些文本框应将自身重置为比空字符串更有意义的值。您可以使用“属性”窗口进行此操作。

您可以从事件发送者处获取文本框的名称:

private void txtAnyTextBox_Click(object sender, EventArgs e)
{
    TextBox textBox = (TextBox)sender;
    string caller = textBox.Name;
    this.ClearBoxes(caller); // call your custom method
}
private void txtAnyTextBox_Click(object sender, EventArgs e)
{
    var textbox = sender as TextBox;
    this.ClearTextbox(textbox)
}

private void ClearTextbox(TextBox textbox)
{
    textbox.Text = "";
    //...
}
如果只想清除文本框文本,则无需获取其名称-可以使用它的清除方法:

您也可以考虑创建自定义文本框,该文本框会有一些默认值,当单击时,它会怨恨自己:默认值:

public class CustomTextBox : TextBox
{
    public string DefaultText { get; set; }

    protected override void OnClick(EventArgs e)
    {
        base.OnClick(e);
        Text = DefaultText;
    }
}

使用自定义文本框而不是默认文本框,并为每个自定义文本框提供默认文本值,这些文本框应将自身重置为比空字符串更有意义的值。您可以使用“属性”窗口进行此操作。

是的,您可以尝试此操作,尽管它不是泛型的,但在这种情况下不需要泛型:

private void txtAnyTextBox_Click(object sender, EventArgs e)
{
   TextBox tb = sender as TextBox;
   if(tb != null) tb.Text = "";
}
private void txtAnyTextBox_Click(object sender, EventArgs e)
{
    var textbox = sender as TextBox;
    this.ClearTextbox(textbox)
}

private void ClearTextbox(TextBox textbox)
{
    textbox.Text = "";
    //...
}
您可以将此方法附加到所有文本框单击事件

我认为这行不通:

void ClearBoxes(string Caller)
{
   Caller.txt.Text = "";
   //..... and so on
}
如果您想使用ClearBox方法,您应该将其传递给TextBox元素。但不需要这样做,您可以直接清除TextBox,如上面的代码所示

此外,如果要同时清除所有文本框,例如单击一个按钮,则可以使用以下方法:

private void button1_Click(object sender, EventArgs e)
{
    foreach (var tBox in this.Controls.OfType<TextBox>())
    {
        tBox.Text = "";
    }
}

是的,您可以尝试此方法,尽管它不是泛型的,但在这种情况下不需要泛型:

private void txtAnyTextBox_Click(object sender, EventArgs e)
{
   TextBox tb = sender as TextBox;
   if(tb != null) tb.Text = "";
}
您可以将此方法附加到所有文本框单击事件

我认为这行不通:

void ClearBoxes(string Caller)
{
   Caller.txt.Text = "";
   //..... and so on
}
如果您想使用ClearBox方法,您应该将其传递给TextBox元素。但不需要这样做,您可以直接清除TextBox,如上面的代码所示

此外,如果要同时清除所有文本框,例如单击一个按钮,则可以使用以下方法:

private void button1_Click(object sender, EventArgs e)
{
    foreach (var tBox in this.Controls.OfType<TextBox>())
    {
        tBox.Text = "";
    }
}
您可以使用sender参数来实现这一点

private void txtAnyTextBox_Click(object sender, EventArgs e)
{
    var textbox = sender as TextBox;
    this.ClearTextbox(textbox)
}

private void ClearTextbox(TextBox textbox)
{
    textbox.Text = "";
    //...
}
您可以使用sender参数来实现这一点

private void txtAnyTextBox_Click(object sender, EventArgs e)
{
    var textbox = sender as TextBox;
    this.ClearTextbox(textbox)
}

private void ClearTextbox(TextBox textbox)
{
    textbox.Text = "";
    //...
}

这将是非常讨厌的-因为每次有人在文本框中单击时,都会导致页面重新加载

一种简单得多的方法是用javascript实现

只需添加一个清除文本框的函数,然后可能使用css选择器为每个要在其中使用它的文本框启用该函数

e、 g


这将在客户端完成所有操作,而不会导致任何回发。

这将非常糟糕,因为每次有人单击文本框时,都会导致页面重新加载

一种简单得多的方法是用javascript实现

只需添加一个清除文本框的函数,然后可能使用css选择器为每个要在其中使用它的文本框启用该函数

e、 g


这将在客户端完成所有操作,而不会导致任何回发。

您对水印文本框感兴趣吗?您对水印文本框感兴趣吗?谢谢,但我正在使用windows窗体进行此操作。哦,我明白了!Mu很抱歉,我以为这是一个web表单应用程序。谢谢,但我这次使用的是windows表单。哦,我明白了!我很抱歉,我以为这是一个web表单应用程序。