2014-05-23 104 views
-3
 btnA.Enabled = true; 
     btnB.Enabled = true; 
     btnC.Enabled = true; 
     btnD.Enabled = true; 
     btnE.Enabled = true; 
     btnF.Enabled = true; 
     btnG.Enabled = true; 
     btnH.Enabled = true; 
     btnI.Enabled = true; 
     btnJ.Enabled = true; 
     btnK.Enabled = true; 
     btnL.Enabled = true; 
     btnM.Enabled = true; 
     btnN.Enabled = true; 
     btnO.Enabled = true; 
     btnP.Enabled = true; 
     btnQ.Enabled = true; 
     btnR.Enabled = true; 
     btnS.Enabled = true; 
     btnT.Enabled = true; 
     btnU.Enabled = true; 
     btnV.Enabled = true; 
     btnW.Enabled = true; 
     btnX.Enabled = true; 
     btnY.Enabled = true; 
     btnZ.Enabled = true; 

我在做一個hang子手遊戲,當用戶點擊啓動/重新啓動時,我必須啓用所有這些按鈕。無論如何,我可以通過循環刪除這個冗餘代碼嗎?我可以使用循環啓用多個按鈕嗎?

它是W F A

+1

剛開始啓用它們,然後在使用OnClick時禁用它們。 – slugster

+0

這是一個網絡應用程序? –

+0

您應該指定這是否爲Winforms,WPF,Windows8 XAML,WebForms,...項目使用標籤,因爲每種技術的答案都不相同。 –

回答

2

創建按鈕列表/陣列/收集和做一個for循環。

+0

或者更好的是,創建一個模型對象列表,爲每個模型對象創建一個按鈕,綁定到模型對象,然後更改模型對象的狀態。如果他真的需要「倒退」,他可以查看窗體/窗口的子項,並啓用名稱爲「btn」+字母的所有類型爲button的子項。 –

2
foreach(var b in this.Controls.OfType<Button>()) 
{ 
    b.Enabled = true; 
} 

添加一些LINQ。添加一個where子句以排除不想定位的按鈕。

+0

他說他必須啓用多個按鈕,而不是容器的所有按鈕。 –

+0

它可以做成一個容器而不是整個形式。同樣的想法 – TGH

+0

需要更多的信息才能白名單按鈕,但它看起來像一個命名約定相當連續 – TGH

0

這樣做

foreach(Control ctrl in this.Controls) 
{ 
    if(ctrl is IButtonControl) 
    { 
     ctrl.Enabled = true; 
    } 
} 
0

的簡單循環型檢查;)

foreach(Button btn in this.Controls.OfType<Button>()) 
{ 
    // Invert the current state. 
    btn.Enabled = !btn.Enabled; 
} 

這一切;)

+0

爲什麼投票? O.O – Knoweldges

+0

我沒有倒下,但可能是因爲有人已經發布了一個幾乎與此相同的答案。 –

+0

我正在寫我的答案,當我提交了答案的時候,出現了另外3個答案:c – Knoweldges

-1

不指定,但如果這是一個web應用我會推薦使用javascript/html來做到這一點。例如,如果你在你的應用程序使用jQuery下面的代碼應該這樣做:

$("button").prop("disabled",true); 

這將避免不必要的回發到服務器,而且似乎比你將能夠在代碼實現之後的任何解決方案簡單。

相關問題