VB.NET 4.5在运行时在Excel工作表上移动控件

我在64位Windows 8.1专业平台上在Visual Studio 2013中使用Visual Basic 2013与VSTO。 我创build了一个function区插件,允许用户通过该function区将控件放置在电子表格上。 我一直在试图添加额外的function,以便当用户点击/拖动一个控件(在这种情况下是一个Windows.Forms.Button)时,它可以被拖动(或者只是移动)到工作表中的另一个点上。 我根本找不到办法做到这一点。 我可以让它移动,但只有在其显示矩形(我认为),以便部分(或完全取决于我移动多远)button消失。 我无法发布任何有意义的代码,因为我已经尝试过/重试过,写过/重写了很多次,没有太多的成功。 你知道如何或如果我可以在一个表内移动这些控制/button? 谢谢,

在下面添加了一些附加信息

我已经清理了一些代码,可以帮助你,如果你正在看这个问题。 下面的第一部分是mousedown和mousemove事件的事件处理程序。 这些允许移动控制button,但是您可以通过电子表格(显示矩形?)中的窗口看到它,如果按住鼠标button将其移动到查看矩形的边界之外,该button将消失。

Private Sub button1_mousedown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Dim sentButton As Button = CType(sender, Button) Dim a, b As Rectangle a = sentButton.ClientRectangle b = sentButton.DisplayRectangle xy = Control.MousePosition.X - sentButton.Location.X yx = Control.MousePosition.Y - sentButton.Location.Y End Sub Private Sub button1_mousemove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Dim sentButton As Button = CType(sender, Button) If e.Button = Windows.Forms.MouseButtons.Left Then newpoint = Control.MousePosition newpoint.X -= xy newpoint.Y -= yx sentButton.Location = newpoint Application.DoEvents() End If End Sub 

这些事件处理程序在父窗体中使用以下分配方式调用:

 AddHandler button.MouseDown, AddressOf button1_mousedown ' handles mouse down 

另一个令人费解的事情。 如果我调整控件,它工作正常。 也就是说,即使现在比以前更大,它也不会消失任何部分,尽pipe我没有明确地做任何事情来允许增加或减less的大小。 我可以用下面的一行来resize:

 sentButton.SetBounds(20, 20, 100, 50) 

再次问:你知道如何或如果我可以移动这些控制/button在一个工作表内?