【发布时间】:2013-03-24 14:20:45
【问题描述】:
我的申请有两种形式。我想将一个表格放在另一个表格前面。我想了解为什么这段代码不起作用:
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 属性设置为 Manual。
-
嗨,汉斯!感谢您的帮助,它成功了!但是为什么第一个表格显示在正确的位置?能否请您详细说明不良做法?
-
这是一个需要书本的问题,我们不在这里写。自己发现这一点的最好方法是用 C# 编写一段时间的代码,它不会让你摆脱这种编程风格。脑移植会很痛苦,你会失去一年的生命,但在那之后你会成为一个更好的程序员,并彻底理解类和对象之间的区别。
-
我有书。你能给我介绍一下正确的章节吗?我没有一年用 C# 编写代码。
标签: vb.net winforms visual-studio-2010 windows-7