我有一个包含很多文本框的程序,我有文本框,我希望在_click上清除,然后如果没有输入任何内容并且用户点击了,则重置为默认值。
我打算这样做显然效率低下,不得不每次都给文本框命名,我想知道如何简化它。
这就是我现在得到的,我每次都必须更改文本框字段名称的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
}
答案 0 :(得分:2)
是的,你可以试试这个(虽然它不是通用的,但在这种情况下不需要泛型):
private void txtAnyTextBox_Click(object sender, EventArgs e)
{
TextBox tb = sender as TextBox;
if(tb != null) tb.Text = "";
}
您可以将此方法附加到所有文本框Click event
。
textBox1.Click += txtAnyTextBox_Click;
textBox2.Click += txtAnyTextBox_Click;
我认为这不会起作用:
void ClearBoxes(string Caller)
{
Caller.txt.Text = "";
//..... and so on
}
如果您想使用ClearBoxes
方法,则应将TextBox
元素传递给它。但是没有必要,您可以直接清除textBox,如上图所示。
此外,如果您想要同时清除所有TextBox,例如单击一次按钮就可以使用它:
private void button1_Click(object sender, EventArgs e)
{
foreach (var tBox in this.Controls.OfType<TextBox>())
{
tBox.Text = "";
}
}
答案 1 :(得分:1)
您可以从事件发件人获取文本框的名称:
private void txtAnyTextBox_Click(object sender, EventArgs e)
{
TextBox textBox = (TextBox)sender;
string caller = textBox.Name;
this.ClearBoxes(caller); // call your custom method
}
如果您只想清除文本框文本,则无需获取其名称 - 您可以使用Clear()
方法:
private void txtAnyTextBox_Click(object sender, EventArgs e)
{
TextBox textBox = (TextBox)sender;
textBox.Clear();
}
此外,您可以考虑创建自定义文本框,该文本框将具有一些默认值,并在单击时重新发送为默认值:
public class CustomTextBox : TextBox
{
public string DefaultText { get; set; }
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
Text = DefaultText;
}
}
使用自定义文本框而不是默认文本框,并为每个自定义文本框提供DefaultText
值,该文本框应将自身重置为比空字符串更有意义的内容(您可以使用“属性”窗口)。
答案 2 :(得分:1)
您可以使用sender
参数。
private void txtAnyTextBox_Click(object sender, EventArgs e)
{
var textbox = sender as TextBox;
this.ClearTextbox(textbox)
}
private void ClearTextbox(TextBox textbox)
{
textbox.Text = "";
//...
}
答案 3 :(得分:0)
这会非常讨厌 - 因为每次有人在文本框中点击时都会重新加载页面。
更简单的方法是在javascript中执行此操作。
只需添加一个函数来清除文本框,然后可以使用css选择器为你想要使用它的每个文本框启用该函数。
e.g。
<input type="text" class="clearme" />
$(".clearme").click(function() {
$(this).val('');
});
这将在所有客户端执行而不会导致任何回发。