0

テキストボックスにチェックが入っているときに30個のボタンのセットを100px下に移動しようとしています(ボックスのチェックが外れていると元に戻ります)。これは、ユーザーが必要とする場合に、ボタンの下にいくつかのラベルを表示するためのスペースを提供するためです...ここの「ヒントを表示」ボックスのように: 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

別のアイデア...すべてのボタンを 内に配置し、そのプロパティをPanel変更して、その中のすべてを移動します。.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

コンテナが所有するコントロールを反復処理でき、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 に答える
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 に答える