我想在VB.NET中使用带有owner参数的MessageBox.Show(),如下所示:
MessageBox.Show(owner As IWin32Window,...)
我的理解是,如果此代码是Windows格式,您只需将“我”(VB.NET)或“this”(C#)作为所有者参数传递。但是,我的代码是Excel COM加载项的一部分,并且所有者参数必须以某种方式绑定到特定的Excel窗口。
那么,我如何获取Excel窗口对象并将其转换为可以传递给VB.NET中的MessageBox.Show()的IWin32Window?如果我可以轻松地将它转换为VB.NET,我会接受C#代码。
答案 0 :(得分:2)
我已经向你指出了C# version。只需编写它的VB.NET版本:
Public Class WindowWrapper
Implements IWin32Window
Private hwnd As IntPtr
Public Sub New(handle As IntPtr)
hwnd = handle
End Sub
Public Sub New(handle As Integer)
hwnd = New IntPtr(handle)
End Sub
Public ReadOnly Property Handle As IntPtr Implements IWin32Window.Handle
Get
Return hwnd
End Get
End Property
End Class
并使用如下:
MessageBox.Show(New WindowWrapper(app.Hwnd), _
'' other arguments... _
)
其中app
是存储Microsoft.Office.Interop.Excel.Application接口的变量。