代码如何能简洁些呢?

zhq1001 2020-10-31 09:46:06
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 语句吧?

怎么才能简洁些呢?谢谢
...全文
2680 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
例如 winform 所有控件都支持 BindingSource 架构。但是因为各类“培训班”教不到这个程度的知识只能教一些皮毛,而我们现在也确实很少用 Winform 而懒得去用一些知识,那么我们就可以“自己发明”一些 Helper 方法重复发明车轮子,来达到“只写一次代码”目的。例如为 Button 类型的对象写一个名字为 SetColor 的扩展方法,这样就能在代码中随时用简洁的的代码来调用。而将“多行”代码隐藏(封装)起来。
  • 打赏
  • 举报
回复
简单说,所谓“怎么才能简洁些呢?”这类问题,就是要“只写一次代码”!

对于简单的模式,设计为 Method。对于复杂的模式,设计为 Class。然后复用。

会复用,才可能神。
  • 打赏
  • 举报
回复
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;
}
}
}
吉普赛的歌 2020-10-31
  • 打赏
  • 举报
回复
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;
                    }
}
ziqi0716 2020-10-31
  • 打赏
  • 举报
回复
这不就是要个循环就行了吗?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧