确定对象的运行时 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
这可能是一个愚蠢的问题,但我试图在每次按下按钮时将按钮向左移动大约 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