为什么我不能这样设置表单位置属性?

时间:2013-03-24 14:20:45

标签: vb.net winforms visual-studio-2010 windows-7

我的申请表有两种形式。我想把一个表格放在另一个表格的前面。我想了解为什么这段代码不起作用:

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Location = New Point(200, 200)
    Form2.Location = New Point(200, 200)
    Form2.BringToFront()
End Sub
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    Form2.Visible = True
    Me.Text = Form2.Location.X
End Sub
End Class

当我运行代码时,第二个表单位于屏幕上的随机位置 如果我删除 Form2.Visible 语句:

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Location = New Point(200, 200)
    Form2.Location = New Point(200, 200)
    Form2.BringToFront()
End Sub
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    Me.Text = Form2.Location.X
End Sub
End Class

第二种形式似乎定位正确,但唉,它不可见。

我确信,有一些解决方法。我只是想明白为什么这么简单的事情不能按预期工作。

1 个答案:

答案 0 :(得分:0)

正如Hans在评论中提到的那样,您需要将Form.StartPosition设置为FormStartPosition.Manual,以便表单读取您设置的位置。有关如何以及为何采用这种方式的详细信息,请参阅this question on StackOverflow.com