我正在开发一个使用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表单时(总是无法在表单文本框中输入任何内容),我就不会关注它了。
可以请一些帮助,在这里切换重点
答案 0 :(得分: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();