2013-03-24 63 views
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 

第二種形式似乎是正確的位置,但很可惜,這是不可見的。

我相信,有解決方法。我只是想了解爲什麼這麼簡單的事情不能按預期工作。

+1

這裏有幾個不好的做法,但其核心原因是您忘記將窗體的StartPosition屬性設置爲手動。 – 2013-03-24 14:41:53

+0

嗨,漢斯!感謝您的幫助,它的工作!但爲什麼第一種形式顯示在正確的位置?你能否詳細說明不好的做法? – GreenBear 2013-03-24 14:47:18

+0

這是一個需要一本書的問題,我們不會在這裏寫下它們。自己發現這個最好的方法是通過在C#中編寫代碼一段時間,它不會讓你擺脫這種編程風格。大腦移植將會嚴重受傷,你會失去一年的生活,但在此之後,你將成爲一個更好的程序員,並徹底地理解類和對象之間的差異。 – 2013-03-24 15:00:12

回答

相關問題