C# 以Excel为所有者的Form.ShowDialog速度较慢
我正在开发一个Excel加载项,我有一个表单(WinForms),我希望它是模态的,并显示中心父级。我将Excel的句柄分配给一个C# 以Excel为所有者的Form.ShowDialog速度较慢,c#,winforms,interop,C#,Winforms,Interop,我正在开发一个Excel加载项,我有一个表单(WinForms),我希望它是模态的,并显示中心父级。我将Excel的句柄分配给一个NativeWindow,然后在调用ShowDialog时将其用作owner参数。看起来像这样: NativeWindow excel = new NativeWindow(); excel.AssignHandle(new IntPtr(application.Hwnd)); // interop Excel app MyWindow window = new Wi
NativeWindow
,然后在调用ShowDialog
时将其用作owner
参数。看起来像这样:
NativeWindow excel = new NativeWindow();
excel.AssignHandle(new IntPtr(application.Hwnd)); // interop Excel app
MyWindow window = new Window();
window.ShowDialog(excel);
在此处调用ShowDialog
需要约5秒钟。如果我只是正常地调用ShowDialog
,所有其他代码都完好无损,它会立即出现——因此我有理由相信这就是罪魁祸首
我在做什么蠢事吗?是否有我可以提前启动的事件或延迟加载(或Excel本身)?除了Excel思考一段时间之外,没有明显的原因说明这会很慢。ShowDialog()已经非常擅长自动选择正确的窗口作为所有者,它使用GetActiveWindow()。有关可能的解决方案,请参阅。