0

我试图在选中文本框时将一组 30 个按钮向下移动 100 像素(然后在未选中该框时返回它们的原点)。如果用户需要,这是为按钮下方的一些标签提供空间......就像这里的“显示提示”框:http ://www.phonemicchart.com/

我有以下代码:

    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged

    If CheckBox1.Checked = True Then

        Button5.Location = New Point(100, 100)
        Label1.Visible = False
    Else
        Button5.Location = New Point(300, 300)
        Label1.Visible = True
    End If
End Sub

问题是 New Point() 函数。我想要的新点是相对于原点的 -100px,然后是 Else 语句,它是 Button5.Location = Origin。

我可以使用哪些命令来实现这一点?

4

3 回答 3

1

另一个想法...将所有按钮放在 aPanel中,然后更改.Top它的属性以移动其中的所有内容。

  Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _
                                       ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
    If CheckBox1.Checked Then
      Panel1.Top += 100
    Else
      Panel1.Top -= 100
    End If
  End Sub
于 2013-02-11T18:38:56.130 回答
0

使用 Left 和 Top 代替,如:

使用 VB.net 以编程方式更改 Windows 窗体上控件的位置?

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged

    If CheckBox1.Checked = True Then

        Button5.Top = 100
        Button5.Left = 100
        Label1.Visible = False
    Else
        Button5.Top = 300
        Button5.Left = 300
        Label1.Visible = True
    End If
End Sub
于 2013-02-11T18:28:36.830 回答
0

您可以遍历容器拥有的控件,并且如 mfarid 提供的那样,您可以使用 Top 属性

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
Dim ctrl As Control
For Each ctrl In container.Controls
  If CheckBox1.Checked = True Then  
    ctrl.Top += 100
  ElseIf
    ctrl.Top -= 100
  End If
Next
EndSub

于 2013-02-11T18:41:34.767 回答