我在64位Windows 8.1专业平台上的Visual Studio 2013中使用Visual Basic 2013和VSTO。 我创建了一个功能区插件,允许用户通过该功能区在电子表格上放置控件。我一直在尝试添加其他功能,以便当用户单击/拖动控件(在这种情况下为Windows.Forms.Button)时,可以将其拖动(或仅移动)到工作表上的另一个点。 我根本找不到办法做到这一点。我可以让它移动但只在其显示矩形(我认为)内部,以便部分按钮(或完全取决于我移动它的距离)消失。我无法发布任何有意义的代码,因为我已经尝试/重试,编写/重写了很多次而没有太大的成功。 你知道怎么或我是否可以在一张纸上移动这些控件/按钮? 谢谢,
在下面添加了一些其他信息:
如果您正在查看此问题,我已经清理了一些可能对您有帮助的代码。下面的第一部分是mousedown和mousemove事件的事件处理程序。这些允许移动控制按钮,但是您可以通过电子表格中的窗口(显示矩形?)看到它,如果在按住鼠标按钮的同时将按钮移动到查看矩形的边界以外,按钮将消失。 / p>
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
另一个令人费解的事情。如果我调整控件的大小,它可以正常工作。也就是说,即使它现在比以前更大,它也不会消失控件的任何部分,尽管我没有明确地做任何事情以允许增加或减小尺寸。我可以使用如下所示的行调整大小:
sentButton.SetBounds(20, 20, 100, 50)
再次提问:你知道如何在一张纸上移动这些控件/按钮吗?