【问题标题】:How can I make a ToolTip for a text box in WPF, Using C# not XAML如何在 WPF 中为文本框制作工具提示,使用 C# 而不是 XAML
【发布时间】:2021-02-18 04:25:00
【问题描述】:

我想制作一个出现的工具提示,然后在 5 秒后或当用户再次单击文本框时消失,但如果用户将鼠标移动或在文本框上,工具提示不应该更早消失超过 5 秒。

这是我的代码,我正在检查以防止用户在 txtName 文本框中输入这些字符,当用户写入任何这些字符时,它会将它们替换为“”,然后我想立即显示工具提示,它应该在 5 秒后消失,但在此代码中,SetShowDuration 不起作用,工具提示出现并永久保留。

        private void txtName_TextChanged(object sender, EventArgs e)
    {
        if (Regex.IsMatch(txtName.Text, @"[\\/:*?""<>|]"))
        {
            string pattern = @"[\\/:*?""<>|]";
            Regex regex = new Regex(pattern);
            txtName.Text = regex.Replace(txtName.Text, "");

            ToolTip toolTip = new ToolTip();
            toolTip.Content = @"The file name can't contain any of the following characters: \ / : * ? "" < > |";
            toolTip.IsOpen = true;
            ToolTipService.SetToolTip(toolTip, txtName);
            ToolTipService.SetShowDuration(toolTip, 1000);
        }
    }

【问题讨论】:

  • 这称为验证,参见例如this(异常验证规则)。

标签: c# wpf xaml


【解决方案1】:

对于这种“自定义”工具提示,我建议您考虑使用Popup 以获得更大的灵活性。您可以使用其IsOpen 属性来决定何时显示和隐藏“工具提示”。

WPF Popup vs Tooltip

在这种情况下,您可以使用一个计时器,在 5 秒后将 IsOpen 设置为 false:

await Task.Delay(5000):
popup.IsOpen = false;

【讨论】:

  • 谢谢,效果很好,不知道弹窗功能已经存在了。
猜你喜欢
  • 1970-01-01
  • 2015-09-02
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 2014-10-30
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多