vsto窗体在excel内弹窗置顶

  • 参考链接:
  • 一般vsto打开窗体用show方法,往往会碰到窗体置顶的问题,以下两个方法都存在弊端

  1. winform有个置顶属性TopMost,当把TopMost属性设为true时,窗体置顶可以实现,但是效果是全局置顶,会呈现在所有的应用程序之上
  2. 用showDialog方法打开窗体,不过该方法在打开窗体的时候无法操作Excel表格,还有就是如果你在打开窗体的代码之后还有代码要执行的话,可能无法达到效果
  • 所以最好的办法就是在窗体show的时候给他指定一个所有者,让其在所有者内部置顶
  • 首先我们新建一个类,该类继承IWin32Window接口,代码如下:
  • Imports System
    Imports System.Windows.Forms

    Public Class formTop
    Implements IWin32Window

    'IWin32Window接口类,为了实现弹出的窗体在Excel内

    Private m_Handle As IntPtr

    Public Sub New(ByVal handle As IntPtr)
    MyBase.New()
    Me.m_Handle = handle
    End Sub

    Public Sub New(ByVal handle As Integer)
    MyBase.New()
    Me.m_Handle = New IntPtr(handle)
    End Sub


    Public ReadOnly Property Handle As IntPtr Implements IWin32Window.Handle
    Get
    Return Me.m_Handle
    End Get
    End Property

    Public Sub Show(ByVal f As Form)
    If Not f.Visible Then
    f.Show(Me)
    End If
    End Sub

    Public Function ShowDialog(ByVal f As Form) As DialogResult
    Return f.ShowDialog(Me)
    End Function
    End Class


  • 然后窗体show的时候传入当前的excel文档的窗柄

  • Dim formtop As New formTop(Globals.ThisAddIn.Application.Hwnd)
    formtop.Show(loginform)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值