0

我正在开发一个使用 WPF 表单的 Excel Office 插件,我能够创建一个表单并在下面的代码的帮助下在按钮单击时显示它

UC frm = new UC();
ElementHost.EnableModelessKeyboardInterop(frm);
frm.Show();
System.Windows.Threading.Dispatcher.Run();

我将 Window 设置为 TopMost,这样当我在 Excel 中选择一个范围时,我希望地址出现在 WPF 文本框中。发生的情况是,当我打开表单并且选择 Excel 范围时,焦点不会返回到 Excel 应用程序,并且不会触发 SelectionChange 事件。

如果我删除此行System.Windows.Threading.Dispatcher.Run();它可以工作,但是当我输入它时,我不会专注于 WPF 表单(无法在表单文本框中输入任何内容)它总是会进入 Excel 单元格

可以请一些请帮助在这里切换焦点

4

1 回答 1

0

我通过使用此代码弄清楚了

var thread = new Thread(() =>
{
mw = new UI.MainWindow();
mw.Show();
mw.Closed += (sender2, e2) => mw.Dispatcher.InvokeShutdown();
Dispatcher.Run();
});

thread.SetApartmentState(ApartmentState.STA);
thread.Start();
于 2018-11-04T08:42:20.147 回答