【问题标题】:Extended WPF Toolkit - WatermarkPasswordBox prevent from typing in enter value扩展的 WPF 工具包 - WatermarkPasswordBox 防止输入输入值
【发布时间】:2018-01-10 09:15:53
【问题描述】:

我有一个小问题,正如标题所说的 WatermarkPasswordBox。如果我使用普通 WPF 的 PasswordBox,我无法在其中输入 Enter 键(值 is\n),这很好。但是,当我使用 Extended WPF Toolkit 中的 WatermarkPasswordBox 时,它会不断地输入 Enter 值。

我试图以这种方式在输入键上什么都不做:

private void TextBox_Password_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {

    }
}

private void TextBox_Password_KeyUp(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {

    }
}

private void TextBox_Password_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {

    }
}

private void TextBox_Password_PreviewKeyUp(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {

    }
}

但这无济于事。我真的很想使用扩展 WPF 工具包的 PasswordBox,但这很烦人。

更准确地说:

【问题讨论】:

  • “它不断地输入输入值” - 恐怕我不明白。你真的是说你经常得到按键事件吗?并且只针对这些控件?
  • 我的意思是当我在键盘上点击 Enter 时,然后在密码框中输入 \n
  • 通常不是文本框本身处理回车键;相反,如果表单包含一个标记为默认的按钮,则该按钮会拦截当前对话框的回车键。这也适用于扩展的 WPF 工具包控件。
  • 我只是添加了一张图片,所以你可以看到密码.. 它不是\n char,它是\r。每个字符都是一个 Enter 键点击

标签: c# wpf visual-studio mvvm wpftoolkit


【解决方案1】:

通常不是文本框本身处理回车键;相反,如果表单包含一个标记为默认的按钮,则该按钮会拦截当前对话框的回车键。如果表单上有这样的按钮,则无需显式处理回车键。

但是如果你无论如何都想这样做,方法是处理 PreviewKeyDown 事件并将 EventArgs 的 Handled 属性设置为 true:

    private void WatermarkPasswordBox_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter) e.Handled = true;
    }

【讨论】:

  • 非常感谢.. 如此简单,但魔鬼在细节中
猜你喜欢
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多