单击文本框中的明文

时间:2014-02-10 09:34:06

标签: c# .net wpf textbox

我希望我的TextBox文本已经有产品名称,当我点击它时会自动消失,我可以输入我想要的文本框。

  • 产品名称必须始终存在,而TextBox
  • 中没有文字
  • 我也希望如果我第二次点击TextBox,我就不会丢失我已输入的内容。

请告诉我如何在不丢失我手动输入的数据的情况下执行该操作,只要我自己在文本框中输入任何内容,我就可以获得默认文本。

5 个答案:

答案 0 :(得分:1)

这种行为被称为水印。你可以:

  1. 使用文本框控件和WPF extended toolkit
  2. 等库中的水印
  3. 使用样式和附加行为实现自我,如blog post
  4. 所示
  5. 使用更简单的代码做一些技巧来实现相同的行为,例如,如codeproject post
  6. 所示

答案 1 :(得分:1)

为什么要使用一些额外的软件而不是用你自己的思维来编码?这是实现此任务的简单代码

首先使用它:

public bool txSearch = false;

然后在您的文字点击事件代码:

private void txtSearch_Click(object sender, EventArgs e)
{
    txSearch = true;

    if (txtSearch.Text == "Product Name")
    {
        if (txSearch == true)
        {
            txtSearch.Text = "";
        }                   
    }
}

当您单击文本时,这将清除您的字段文本框,现在在文本框中没有任何内容时写回产品名称,并且您要离开它,在文本框离开事件时执行此代码:

private void txtSearch_Leave(object sender, EventArgs e)
{
    if (txtSearch.Text == "")  // here you can also use txtSearch.Text != "Poduct Name", but it could affect your search code possibly 
    {
        txtSearch.Text = "Product Name";  
    } 
}

答案 2 :(得分:0)

您应该考虑使用第三方控件,有足够的WatermarkTextbox控件可用。我更喜欢xceed中的那个:http://wpftoolkit.codeplex.com/wikipage?title=WatermarkTextBox

前段时间我自己写了这个行为,使用AdornerDecorator来覆盖TextBox,将IsFocused属性绑定到我的ViewModel并制作了一个标记ShouldShowWatermark其中我绑定了AdornerDecorator的可见性。

答案 3 :(得分:0)

您实际上需要为文本框添加水印。

请查看Watermark / hint text TextBox in WPF的答案,以便在文本框中实现附加属性。

答案 4 :(得分:0)

这将起作用:

转到文本框的“属性”。您会在第一行标签中看到一个黄色的闪电。在那里您会找到所有可能触发的事件。搜索“输入”或“单击”条目,双击它。在那里您可以放置​​任何内容(例如textBox1.Clear();)