我们在PreviewKeyDown事件中获取Text Box的当前值吗?

时间:2015-11-30 07:55:50

标签: c# wpf

我正在尝试在 PreviewKeyDown 事件中读取文本框的当前值,但无法获取当前值。

这是我的代码,

    private void txtDoscountValue_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        try
        {
          if  (txtDoscountValue.Text == string.Empty)
              discountPercentage = 0;
          else
              discountPercentage = float.Parse(txtDoscountValue.Text);
              CalculateCart(cartItems, discountPercentage, 0);
        }
        catch
        { }
    }      

2 个答案:

答案 0 :(得分:7)

也许你的问题是你在PreviewKeyDown询问,所以当它被调用时,框中仍然没有值。如果您想在框实际更改时被调用,则需要挂钩KeyDown或更好TextChanged

PreviewKeyDown用于在实际应用之前检查更改的内容,这是一种验证。

修改的值存储在keyEventArgs中,而不是文本框中。

答案 1 :(得分:0)

可以使用Text控件的TextBox属性随时读取 TextBox 的值:

var currentValue=textBox.Text;

要阅读输入的keys键盘,您可以使用e.Key的{​​{1}}:

KeyEventArgs

<强>更新

可以使用private void txtDoscountValue_PreviewKeyDown(object sender, KeyEventArgs e) { try { string input=e.Key; var ee = txtDoscountValue.Text; } catch { } } 类将KeyConverter转换为字符串。您应该将程序集 System.Windows.Forms 的引用添加到WPF项目以使用Keys类:

KeyConverter

}