1
我的申请有两种形式。我想把一个表格放在另一个表格的前面。我想知道为什么这个代码不工作:为什么我不能以这种方式设置表单位置属性?
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
第二种形式似乎是正确的位置,但很可惜,这是不可见的。
我相信,有解决方法。我只是想了解为什么这么简单的事情不能按预期工作。
这里有几个不好的做法,但其核心原因是您忘记将窗体的StartPosition属性设置为手动。 – 2013-03-24 14:41:53
嗨,汉斯!感谢您的帮助,它的工作!但为什么第一种形式显示在正确的位置?你能否详细说明不好的做法? – GreenBear 2013-03-24 14:47:18
这是一个需要一本书的问题,我们不会在这里写下它们。自己发现这个最好的方法是通过在C#中编写代码一段时间,它不会让你摆脱这种编程风格。大脑移植将会严重受伤,你会失去一年的生活,但在此之后,你将成为一个更好的程序员,并彻底地理解类和对象之间的差异。 – 2013-03-24 15:00:12