gpt4 book ai didi

wpf - 文本框控件中的文本输入问题

转载 作者:行者123 更新时间:2023-12-01 09:10:25 25 4
gpt4 key购买 nike

我在一个 WPF 项目中工作,它基本上是一个实现 MVVM 模式的类库项目。为了清楚起见,我会说我只有一个窗口,上面有一个文本框控件。

现在,我将此 dll 添加到另一个项目,这是一个 Windows 窗体项目,并且我正在使用该项目中的文本框控件调用窗口。

在我的 Windows 窗体项目中,我有一个带有按钮的窗口,当我单击它时会调用 WPF 窗口,并且在显示 WPF 窗口之前,它会将 WPF 窗口设为其子窗口,然后显示它。

这是我用来调用 WPF 窗口的代码:


MyWPFWindow wpfWin = new MyWPFWindow ();
WindowInteropHelper helper = new WindowInteropHelper(wpfWin);
helper.Owner = this.Handle;
wpfWin.Show();

此代码运行良好,它显示 WPF 窗口,但问题是当我尝试在文本框控件中输入文本时,我不能。 “删除”和“退格”键确实有效,并且奇怪的是,如果我使用 ShowDialog() 而不是 Show(),那么一切正常,但我不能使用 ShowDialog(),因为我需要访问父窗口。

谁能帮我弄清楚为什么会这样。

谢谢!

最佳答案

您需要调用ElementHost::EnableModelessKeyboardInterop传入您的 WPF 窗口实例。这会在 WinForms 消息循环中安装一个消息过滤器,当它处于事件状态时,它将所有输入转发到 WPF 窗口。

所以你的最终代码应该是这样的:

MyWPFWindow wpfWin = new MyWPFWindow ();

WindowInteropHelper helper = new WindowInteropHelper(wpfWin);
helper.Owner = this.Handle;

ElementHost.EnableModelessKeyboardInterop(wpfWindow);

wpfWin.Show();

关于wpf - 文本框控件中的文本输入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1597655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com