我有一个Outlook 2013 VSTO插件。我试图将我的saveFileDialog集中在父级上。我读到你可以使用IWin32Window句柄重载ShowDialog()方法。我找不到任何示例来展示如何获得这个IWin32Window句柄。如何获取Outlook的IWin32Window句柄,以便将其传递给ShowDialog()并将saveFileDialog()置于父窗口的中心。
从我所看到的只是传递手柄还不够。似乎有一个额外的步骤,但我不能为我的生活找到它。
如果有人可以提供一个如何捕获句柄的示例,然后将窗口置于父级的窗口中以获取saveFileDialog(),那将是一个巨大的帮助。
由于
答案 0 :(得分:1)
您需要创建IWin32Window接口的实例,以将其传递给Form类的Show或ShowDialog方法。例如,您可以使用以下代码:
public class WindowHandle : System.Windows.Forms.IWin32Window
{
public WindowHandle(IntPtr handle)
{
_hwnd = handle;
}
public IntPtr Handle
{
get { return _hwnd; }
}
private IntPtr _hwnd;
}
要获取窗口句柄,您可以将Explorer或Inspector类的实例转换为IOleWindow接口。 GetWindow方法允许检索窗口的句柄。