在VSTO Addin到Center saveFileDialog中获取IWin32Window父句柄

时间:2015-06-01 20:08:28

标签: c# vsto

我有一个Outlook 2013 VSTO插件。我试图将我的saveFileDialog集中在父级上。我读到你可以使用IWin32Window句柄重载ShowDialog()方法。我找不到任何示例来展示如何获得这个IWin32Window句柄。如何获取Outlook的IWin32Window句柄,以便将其传递给ShowDialog()并将saveFileDialog()置于父窗口的中心。

从我所看到的只是传递手柄还不够。似乎有一个额外的步骤,但我不能为我的生活找到它。

如果有人可以提供一个如何捕获句柄的示例,然后将窗口置于父级的窗口中以获取saveFileDialog(),那将是一个巨大的帮助。

由于

1 个答案:

答案 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方法允许检索窗口的句柄。