if (group.Contains(Convert.ToInt32(button3.Text)))
{
button3.ForeColor = Color.White;
button3.BackColor = Color.Crimson;
}
else
{
button3.ForeColor = Color.Black;
button3.BackColor = Color.Transparent;
}
總共有120個 button 需要根據group是否包含 button的text值來改變顏色
總不能寫120個 if 陳述句吧?
怎么才能簡潔些呢?謝謝
uj5u.com熱心網友回復:
這不就是要個回圈就行了嗎?uj5u.com熱心網友回復:
foreach(Control c in Controls){
Button btn = c as Button;
if(btn==null)
continue;
if (group.Contains(Convert.ToInt32(btn.Text)))
{
btn.ForeColor = Color.White;
btn.BackColor = Color.Crimson;
}
else
{
btn.ForeColor = Color.Black;
btn.BackColor = Color.Transparent;
}
}
uj5u.com熱心網友回復:
void test(HashSet<Int32> group, IEnumerable<Button> buttons)
{
foreach (var button3 in buttons)
{
if (group.Contains(Convert.ToInt32(button3.Text)))
{
button3.ForeColor = Color.White;
button3.BackColor = Color.Crimson;
}
else
{
button3.ForeColor = Color.Black;
button3.BackColor = Color.Transparent;
}
}
}
uj5u.com熱心網友回復:
簡單說,所謂“怎么才能簡潔些呢?”這類問題,就是要“只寫一次代碼”!對于簡單的模式,設計為 Method。對于復雜的模式,設計為 Class。然后復用。
會復用,才可能神。
uj5u.com熱心網友回復:
例如 winform 所有控制元件都支持 BindingSource 架構。但是因為各類“培訓班”教不到這個程度的知識只能教一些皮毛,而我們現在也確實很少用 Winform 而懶得去用一些知識,那么我們就可以“自己發明”一些 Helper 方法重復發明車輪子,來達到“只寫一次代碼”目的。例如為 Button 型別的物件寫一個名字為 SetColor 的擴展方法,這樣就能在代碼中隨時用簡潔的的代碼來呼叫。而將“多行”代碼隱藏(封裝)起來。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/197623.html
標籤:C#
