确定对象的运行时 X 位置


这可能是

一个愚蠢的问题,但我试图在每次按下按钮时将按钮向左移动大约 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

最新更新