确定对象的运行时 X 位置

Determine an object's runtime X-location

这可能是一个愚蠢的问题,但我试图在每次按下按钮时将按钮向左移动大约 160 像素。但是,我需要在运行时知道对象的 x 位置是什么,以便我可以动态地将这 160 个像素添加到它。一个真实世界的例子就在上面(如果你碰巧使用 chrome/firefox-which 谁不是?)每次打开新标签时新标签按钮都会移动(另外减去那些更难的像素)因为我必须弄清楚如何处理 QIOS 开发套件中 QTab 控件内的选项卡关闭事件。

当您使用 WinForm 设计器时,您的窗体上的每个控件都被分配了一个唯一的名称。当你在窗体上放置一个控件时,设计器会自动分配一个唯一的名称(例如 Button1),但你可以将其更改为任何你想要的名称。设计器会自动为每个控件创建一个 class 级变量(即字段)。变量的名称与控件的名称匹配。因此,例如,如果您调用控件 Button1,那么您可以通过 Button1 变量访问该按钮的 X 位置,如下所示:

Dim x As Integer = Button1.Left 

如果您编写的代码旨在处理来自多个控件的事件,因此您不知道要使用哪个变量,则可以使用事件处理程序的 sender 参数。每个事件处理程序都有一个 sender As Object 参数,它指向引发事件的控件。

因此,例如,在点击事件中,您可以这样做:

Private Sub ClickHandler(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
    Dim clickedButton As Button = DirectCast(sender, Button)
    Dim x As Integer = clickedButton.Left
End Sub

你可以这样做:

Button1.Location = New Point(Button1.Location.X - 160, Button1.Location.Y)

或者这个:

Dim pt As Point = Button1.Location
Button1.Location = New Point(pt.X - 160, pt.Y)

或者这样:

Dim pt As Point = Button1.Location
pt.Offset(-160, 0)
Button1.Location = pt