我在Winforms文本框的 KeyDown 处理程序中启动WPF窗口(使用 ShowDialog)。WPF 窗口有一个 IsDefault = true 的按钮。在 TextBox 上按 Enter 后,WPF AccessKey 机制显然会在窗口加载后将其拾取并触发默认按钮。
从 WPF 文本框的 KeyDown 处理程序启动窗口时,此问题不存在。
寻找一种解决方法,以防止 WPF 窗口接收正在 Winforms 文本框中处理的按键。
这是一些说明问题的示例代码:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
var window = new System.Windows.Window();
var button = new System.Windows.Controls.Button
{
IsDefault = true,
Content = "OK",
};
button.Click += (s, args) => window.Close();
window.Content = button;
// window loads then immediately closes due to the default button being triggered
window.ShowDialog();
}
}