c# - ComboBox KeyDown事件如何考虑最后按下的键

标签 c# wpf combobox keydown

我有一个可编辑的组合框,必须处理输入的值(必须是数字)。 在 keydown 事件中,我分析了 combobox.text 并采取了相应的行动。 当然,在这种情况下,combobox.text 应包含 keydown 事件之前的所有文本。相反,我希望包含最终的完整文本键。

我试过了

e.handled=true;

在分析 combobox.text 之前,但这没有用。

作为辅助解决方案,我分析了 e.key 并将其转换为字符串并处理它。问题是它是一个keyeventargs。 试过了

char ch ;
String str;
if (e.Key > Key.D0 && e.Key < Key.D9)
{
  ch = (char)((int)e.Key - (int)Key.D0);
  str = ch.ToString();
}

但是没有成功

---添加--- 对不起,我没有说清楚,我会尽力让它变得更好。 我想在以下事件中处理我的组合框

private void ComboBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)

在里面我想做一些类似的事情

Analyze(combobox.text)

简而言之

private void ComboBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
 if((e.Key > Key.D0 && e.Key < Key.D9) || (e.Key > Key.NumPad0 && e.Key < Key.NumPad9))
  {
    Analyze(comboBox.text)---->text here has to be the combobox.text plus the new pressed key 
  }
}

最佳答案

除了 Rowbear 提出的解决方案之外,还有一种更简单的方法可以解决我的问题。那就是使用 ComboBox_KeyUp 事件。通过这样做,新 key 已经被确认。我说我想把 key 放下来误导了所有人,这是我的错。我添加这个只是为了完整性

关于c# - ComboBox KeyDown事件如何考虑最后按下的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34411087/

相关文章:

c# - 为什么异常不会在 WPF 对话框关闭事件处理程序之外冒泡?

c# - 从数据层 c# 添加组合框项目

c# - 如何使用 DateTime.DaysInMonth 将一个月中的天数填充到组合框

c# - 从 C# 进程调用 Accurev "hist"

c# - 为什么我们不能在枚举字典的键时更改字典的值?

c# - Xamarin Android Spinner (MvxSpinner) 与语言资源和选定项绑定(bind)

wpf - 通过样式在 TextBox 上设置 WPF Binding.StringFormat 属性

c# - Windows 服务与 Winforms/WPF 桌面应用程序

python - 关闭 PyQt 对话框而不关闭主程序

c# - 400 - 为查找字段插入记录时请求错误