2012-03-02 45 views
0

我想在運行時查找標籤,這是正確的方式嗎?在運行時找到控件的正確方法

Control[] control; 
Label label; 

control = this.Controls.Find(labelToChange, false); 
label = (Label)control[0]; 

我找不到返回單個控制的方法,所以我不得不來存儲它的集合,然後檢索的第一個。它會一直找到一個單一的項目。

回答

1

這是使用的正確方法。

MSDN documentation並沒有說明它爲什麼會返回一個集合,但是如果你有一個控件封裝了幾個子控件並且多次實例化,那麼你最終會得到一組標籤。

所以:

  1. 如果你能保證會有永遠只能是一個控制可見在任何一個時間你的代碼就可以了。
  2. 如果可能有多個,那麼你需要遍歷所有返回的控件,並對每個控件執行相同的操作,或者添加更多的代碼來確定你真正想要的是哪一個。在LINQ
+0

ATLEAST他們提供了一個簡單的方法來自動遍歷THROU所有子控件。 Asp.net沒有這個。 – TheGateKeeper 2012-03-02 13:15:21

1

基本思想:

Label label; 

var c = from x in Controls.Find("labelToChange", false) 
    where x.GetType() == typeof(Label) 
    select x; 

label = (Label)c.FirstOrDefault(); 
+0

謝謝,但我從未使用過Linq – TheGateKeeper 2012-03-02 13:15:33

相關問題