一个愚蠢的问题,但我试图在每次按下按钮时将按钮向左移动大约 160 像素。但是,我需要知道对象在运行时的 x 位置是什么,以便我可以动态地将这 160 个像素添加到其中。一个真实世界的例子就在上面(如果你碰巧使用 chrome/firefox - 谁不是?)当每次打开新选项卡时移动新选项卡按钮时(另外减去这些像素也更难,因为我必须弄清楚如何处理 QIOS 开发套件中的 QTab 控件中的选项卡关闭事件)。
这样做:
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
使用 WinForm 设计器时,将为每个窗体上的每个控件分配一个唯一的名称。 在窗体上放置控件时,设计器会自动分配一个唯一的名称(例如 Button1
),但您可以将其更改为您想要的任何内容。 设计器自动为每个控件创建一个类级变量(即字段)。 变量的名称与控件的名称匹配。 因此,例如,如果您调用控件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