2012-07-01 20 views
0

在C#Winforms中,當用戶第一次加載表單時,我通過單擊該標籤將輸入作爲標籤「文本」輸入到數據庫中。再次如果另一個用戶加載該表單,我希望禁用該標籤。我怎麼能做到這一點?這是形式的樣品找到包含「所需文本」的標籤

enter image description here

這是我嘗試:

  • 如果用戶點擊了多個標籤,我得到的輸入字符串爲「E10,E9,E8,E7等,「
  • 當另一個用戶加載的形式,我檢索字符串,並通過分割 說」,」並保存它陣列

    的,但我不知道如何使拉bel從數組中禁用。請幫助。

+0

您嘗試的方法聽起來很合理。爲什麼它不起作用? –

+0

你能告訴我如何找到包含「所需文本」的標籤嗎? –

+0

好的,我已經用我目前在VS2010中工作的代碼編輯了我的答案。請確認它在歐洲足球決賽(西班牙VS意大利)開始前有效;)我不會在這裏:D – Jonathan

回答

1

* 強大的文本 * 1 .-做一個循環您的陣列
2:查找使用的標籤名稱標籤(我supossed該標籤的名稱是相同的您在陣列中有開關輸入字符串)
3.-禁用控制

foreach (string name in yourArray) 
{ 
    var matches = this.Controls.Find(name , true); 
    ((Label) matches).Enable = False 
} 

我沒有編譯器現在在這裏,我希望它運行。請理解,如果沒有。

編輯:查找他的文本屬性標籤:

foreach(Control c in this.Controls) 
{ 
    if(c is Label) 
    { 
     if((Label) c).Text == "RequiredText") 
     { 
      // Do stuff here ; 
     } 
    } 
} 

請注意,如果標籤是面板,組框,或任何內容控制裏面,你會不得不UDO contentControl.Controls代替使用'this'。

編輯2:好的,這段代碼適用於我。我有一個帶有「Sample」文本的標籤。

var myarray = "E1,E2,Sample".Split(','); 

    foreach (Control labelcontrol in this.Controls) 
    { 
     if (!(labelcontrol is Label)) continue; 
     foreach (var text in myarray) 
     { 
      if (labelcontrol.Text == text) 
       labelcontrol.Enabled = false; 
     } 
    } 
+0

它顯示錯誤,無法將類型'system.windows.form.control []'轉換爲'系統.windows.form.label」。它的意思是????我該怎麼辦?該標籤的名稱與輸入字符串不同:( –

+0

可能需要一個索引,因爲它返回一個數組,將其更改爲((Label)matches [0]) – tam

+0

感謝您的幫助,但現在例外情況是'Index as在數組邊界之外'。我將strarray聲明爲「string [] strarray = retr_seats_upper.Split(comma);」 –

相關問題