2014-11-09 78 views
-6

如何檢查Location是否爲x = 100, y = 100比較地點

' Compile error 
If Button1.Location = 0, 0 Then 
    Button1.Visible = False 
End If 
+1

你的問題不夠清楚,你的按鈕移動了嗎? – 2014-11-09 04:09:06

+0

這只是一個例子,我試圖做的是確定一個位置,如果該位置是真的,它會運行一個代碼。 – Greg 2014-11-09 04:11:34

+0

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.locationchanged(v=vs.110).aspx – 2014-11-09 04:13:26

回答

2

Location屬性是Point類型的,所以你必須把它比作Point值。

如果你想要一個Point值與座標(0,0)那麼你可以使用Shared字段Point.Empty。 如果你想要其他座標,那麼你將不得不自己創建一個Point值。

If Button1.Location = New Point(100, 100) Then 
    Button1.Enabled = False 
End If 

或者,可以比較TopLeft性能,其中的每一個都是Integer型,單獨。

+0

這對我來說沒有意義,button1.location存儲1點,然後你將它與另一個點(New Point(100,100))進行比較,這應該永遠不會相等,都是不同的實例,你確定這有效嗎? – 2014-11-09 17:31:27

+0

這很有道理!不要認爲「=」(布爾比較器)總是意味着「相同的對象」。 'System.Drawing.Point'有一個實現的'='運算符,用於比較'.X'和'.Y'值,如果匹配則返回'True'。要知道兩個點是否是同一個對象,必須在對象引用級使用'Is'比較器,或使用靜態函數'Object.ReferenceEquals(Obj1,Obj2)'。 – 2014-11-09 20:38:05

+0

@ bto.rdz,'Point'是一個值類型。價值類型的平等本質上意味着價值的平等。你爲什麼問我它​​是否有效,而不是自己測試它? – jmcilhinney 2014-11-10 00:44:28

1
If Button1.Location.X = 0 And Button1.Location.Y = 0 Then 
    Button1.Visible = False 
End If 
+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 – 2014-11-09 13:56:13

+0

@Odedra它的確如此。 – 2014-11-09 13:56:57

+0

如果您沒有詳細說明您的答案,那麼您的答案如何工作將不會被視爲有用的答案。因此,當您添加代碼時,我向您建議,請解釋您的代碼,以便可能對其他用戶有用。謝謝。 – 2014-11-09 13:59:37

2

看來,你真正想知道的不是我閱讀的內容,而是我之前提供的答案。我不確定這是你的錯,其他人的錯在兩者的結合。無論哪種方式,現在我將回答如何將表格置於其包含窗口左上方的問題。

首先,從(0,0)創建新的Point並不完全錯誤,但使用Point.Empty更正確。

至於實際問題,在調用Show之後設置StartPosition是沒有用的,因爲StartPosition表示表單開始的位置。如果它已經顯示,那麼它已經啓動,因此對StartPosition的任何更改都不起作用。

您需要通過明確設置Location來手動定位表單,這是基於它的大小和您定位窗口的大小之間的關係。你使用CenterParent的事實表明,這不是屏幕,所以如果你想要一個特定的例子,你需要證明這一點。儘管如此,你不應該需要一個具體的例子,因爲它是小學中教授的簡單算術。

+0

嗯,我比你想象的要年輕,而且我還沒有去過這門語言的學校,我一直在自學自我,你能否請你如果可以,給我舉個例子嗎? – Greg 2014-11-11 00:35:01

+0

雖然,我有一個布爾值設置爲true,我想要做的是,如果它的真實它使窗體顯示在中心,但開始位置代碼不工作...'如果My.Settings.NewUser = True Then StartPosition = FormStartPosition.CenterScreen' – Greg 2014-11-11 00:38:02

+0

首先您告訴我們您關心表單的「位置」,現在您告訴我們您關心設置的價值。如果你沒有繼續移動目標帖子,這將是很好的。事實上,你有表單設置自己的'StartPosition'表明你沒有真正閱讀我發佈在我的答案。這樣的代碼可以使用的唯一地方是在窗體的構造函數中。那是你放的地方嗎?如果不是,那麼它是無用的。通常情況下,您將在創建窗體的代碼中調用'Show'或'ShowDialog',而不是從表單外部設置'StartPosition'。 – jmcilhinney 2014-11-11 01:21:04