在WPF / Winform混合项目中处理两次回车键

时间:2011-01-06 20:51:31

标签: wpf winforms

我有一个winform仪表板,它托管了一些WPF对话框。当我在winform ListView中选择一行并按Enter键时,会调用OnItemActivate来启动WPF对话框。但是,WPF对话框出现,然后立即消失,因为默认按钮“取消”被命中。似乎Enter键被触发两次,一次用于启动WPF对话框,另一次用于按下取消按钮。我们不希望通过Enter键击中取消WPF对话框。

根据堆栈跟踪,看起来WPF和Winform分别处理回车键。 WPF不知道Winform ListView已经处理了回车键。这是Winform和WPF互操作中的设计吗?

要使输入键不关闭WPF对话框,我们必须将焦点从取消按钮更改为另一个控件(例如文本块)。有没有更好的方法来解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

正如Rick在评论中建议的那样,在打开WPF对话框之前尝试调用Application.DoEvents()。