Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 为什么我不能这样设置窗体位置属性?_Vb.net_Winforms_Visual Studio 2010_Windows 7 - Fatal编程技术网

Vb.net 为什么我不能这样设置窗体位置属性?

Vb.net 为什么我不能这样设置窗体位置属性?,vb.net,winforms,visual-studio-2010,windows-7,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) Fo

我的申请有两种形式。我想把一张表格放在另一张表格前面。我想了解此代码不起作用的原因:

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
第二种形式似乎定位正确,但遗憾的是,它不可见


我相信,有一些变通办法。我只是想理解为什么这么简单的事情不能像预期的那样工作。

正如Hans在评论中提到的,您需要设置为,以便表单读取您设置的位置。有关如何以及为什么采用这种方式的更多信息,请参阅

这里有几个坏习惯,但核心原因是您忘记将表单的StartPosition属性设置为Manual。嗨,Hans!谢谢你的帮助,成功了!但是为什么第一个表单显示在正确的位置?请你再详细说明一下不良行为,好吗?这是一个需要一本书才能回答的问题,我们不在这附近写。自己发现这一点的最好方法是用C语言编写代码,在一段时间内,它不会让你摆脱这种编程风格。大脑移植会造成严重的伤害,你会失去一年的生命,但在那之后你会成为一个更好的程序员,彻底理解类和对象之间的区别。我有书。你能给我介绍一下正确的章节吗?我没有一年时间用C语言编写代码。