Winform - 覆盖文本框以显示示例文本并单击清除

时间:2013-06-21 14:25:27

标签: c# winforms textbox

我有一个带有文本字段的窗体。我希望文本框显示示例文本,当我单击文本框时,文本将被清除。这样做的最佳方式是什么?

e.g。表单显示文本:192.18.130.44,当用户点击该文本框时,文本被清除。

4 个答案:

答案 0 :(得分:2)

使用Enter事件:

private void textBox_Enter(Object sender, EventArgs e)
{
    textBox.Text = null;
}

虽然,除非您希望总是清除,否则我也会在那里进行一些验证!

BTW ...... CueProvider的链接看起来也很漂亮,如果你不介意第三方的话。

答案 1 :(得分:2)

我认为你想要显示文本框的默认Text,如果它只是在没有任何编辑的情况下进行聚焦,那么默认的Text会在失去焦点时恢复:

string initText = "Love .NET";
bool edited;
//This code line is just for demonstrative purpose, it should be placed such as in the Form constructor
textBox1.Text = initText;
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    edited = !char.IsControl(e.KeyChar);
}

private void textBox1_Enter(object sender, EventArgs e)
{
    if(!edited) textBox1.Clear();
}

private void textBox1_Leave(object sender, EventArgs e)
{
    if (!edited) textBox1.Text = initText;
}

如果您想使文字看起来像watermark,您可能需要相应地应用更多FontForeColor,或者根据需要应用一些自定义绘图。最后一个是使用第三方文本框,这取决于你。

答案 2 :(得分:1)

要使其显示示例文本,请将属性菜单中的text属性设置为您想要的内容,例如192.18.120.44

要点击清楚,请为click事件创建一个方法并执行txtbox1.Text =“”; 您可以通过双击文本框来启动此方法。

答案 3 :(得分:0)

加载winforms时,请检查文本框是空还是空。

然后,如果是,则显示您的示例文本,并将布尔值设置为true(如果文本不为空,则为false)。

然后,在textBox上写一个click事件,如果boolean为true则清除内容,如果boolean为false则清除任何内容,以避免清除textBox,如果他包含你的样本的其他东西..