带有所有者参数的MessageBox.Show()

时间:2015-06-27 15:52:50

标签: c# vb.net excel

我想在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#代码。

1 个答案:

答案 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接口的变量。