这可能是一个愚蠢的问题,但我每次按下按钮时我都试图向左移动大约160个像素。但是,我需要知道运行时对象的x位置是什么,所以我可以动态地将160个像素添加到它。一个现实世界的例子就在上面(如果你碰巧使用chrome / firefox - 谁不是?)当每次打开一个新标签时新的标签按钮移动时(另外减去那些更难的标签)因为我必须弄清楚如何处理QIOS devsuite中QTab控件中的tab close事件。
答案 0 :(得分:1)
使用WinForm设计器时,表单上的每个控件都会分配一个唯一的名称。当您在表单上放置一个控件时,设计器会自动指定一个唯一的名称(例如Button1
),但您可以将其更改为您想要的任何名称。设计者自动为每个控件创建一个类级变量(即字段)。变量的名称与控件的名称匹配。因此,例如,如果您调用控件Button1
,则可以通过Button1
变量访问该按钮的X位置,如下所示:
Dim x As Integer = Button1.Left
如果您正在编写旨在处理来自多个控件的事件的代码,那么您将无法知道要使用哪个变量,您可以使用事件处理程序的sender
参数。每个事件处理程序都有一个sender As Object
参数,该参数指向引发事件的控件。
因此,例如,在click事件中,您可以执行以下操作:
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
答案 1 :(得分:1)
你可以这样做:
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