改变按钮颜色不成功

lgstudyvc 2013-01-29 10:16:47
5个按钮,点击每个使其改变颜色

for(int i = 0; i < nCount; i++)
{
sname = sAry[i];//sAry已存了5个按钮名字
if(sname == sCurName)
button.BackColor = System.Drawing.Color.LightGreen;
else
button.BackColor = System.Drawing.Color.DarkGray;
}

用上面的设置背景色只第一次成功,逐个点击按钮时也执行了上面的代码,可是颜色就不改变了
...全文
389 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
鲸碳耗 2013-01-29
  • 打赏
  • 举报
回复
引用 2 楼 hjywyj 的回复:
C# code?12345678 private void button_Click(object sender, EventArgs e) { Button btn = sender as Button; if (btn.BackColor == System.Drawing.Color.LightGreen……
2楼的这个就对了 把他的判断改为if(btn.Name==sCurName)
Onions 2013-01-29
  • 打赏
  • 举报
回复
引用 6 楼 lgstudyvc 的回复:
补充下,还有句话 for(int i = 0; i < nCount; i++) { System.Windows.Forms.Button button = new System.Windows.Forms.Button();sname = sAry[i];//sAry已存了5个按钮名字 if(sname == sCurName) button.Back……
我很好奇 lz你new一个新的button出来 你放哪呢??? 每次循环都会去new一?
lgstudyvc 2013-01-29
  • 打赏
  • 举报
回复
引用 7 楼 kent111yu 的回复:
System.Windows.Forms.Button button = new System.Windows.Forms.Button(); 这些button都是new出来的 你想要改变颜色的那些按钮已经存在了 当然不会变
如何操作呢,这些按钮是动态的new;根据数据库里的sAry名称数创建的
鲸碳耗 2013-01-29
  • 打赏
  • 举报
回复
System.Windows.Forms.Button button = new System.Windows.Forms.Button(); 这些button都是new出来的 你想要改变颜色的那些按钮已经存在了 当然不会变
lgstudyvc 2013-01-29
  • 打赏
  • 举报
回复
补充下,还有句话 for(int i = 0; i < nCount; i++) { System.Windows.Forms.Button button = new System.Windows.Forms.Button();sname = sAry[i];//sAry已存了5个按钮名字 if(sname == sCurName) button.BackColor = System.Drawing.Color.LightGreen; else button.BackColor = System.Drawing.Color.DarkGray; }
lgstudyvc 2013-01-29
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
sAry存放的是按钮名字,如果名字不符合,你操作的都是button,button是什么,是同一个对象,你怎么操作其他按钮对象
名字都正确,调试时也是每句话都执行了 老大,“名字不符合”啥意思?
Waitforsniping 2013-01-29
  • 打赏
  • 举报
回复
同意一楼的看法,建议把Button改成this.sCurName(就是当前按钮的Name,两个我也分不清楚是哪个)试下
lgstudyvc 2013-01-29
  • 打赏
  • 举报
回复
引用 2 楼 hjywyj 的回复:
C# code ? 12345678 private void button_Click(object sender, EventArgs e) { Button btn = sender as Button; if (btn.BackColor == System.Drawing.Color.LightG……
那样的话如果要是连续点击一个按钮,是不是就没有颜色了?
  • 打赏
  • 举报
回复
   private void button_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;
            if (btn.BackColor == System.Drawing.Color.LightGreen)
                btn.BackColor = System.Drawing.Color.DarkGray;
            else
                btn.BackColor = System.Drawing.Color.LightGreen;
        }
bdmh 2013-01-29
  • 打赏
  • 举报
回复
sAry存放的是按钮名字,如果名字不符合,你操作的都是button,button是什么,是同一个对象,你怎么操作其他按钮对象
Onions 2013-01-29
  • 打赏
  • 举报
回复
引用 14 楼 lgstudyvc 的回复:
引用 13 楼 lonions 的回复:引用 11 楼 lgstudyvc 的回复: 引用 9 楼 lonions 的回复:引用 6 楼 lgstudyvc 的回复: 补充下,还有句话 for(int i = 0; i < nCount; i++) { System.Windows.Forms.Button button = new System.Windows……
其实lz在btn被new出来缺少一步对btn.Name的赋值 已至于以后的判断貌似都没有效果 你可以在调试的时候看看你在if判断的时候btn.Name的值是什么 或许就会发现一些东西了...
lgstudyvc 2013-01-29
  • 打赏
  • 举报
回复
看了看整个代码 可能切换时逻辑有点小问题 先结贴、谢过大家!
lgstudyvc 2013-01-29
  • 打赏
  • 举报
回复
引用 15 楼 hjywyj 的回复:
btn.Name="button"+i;
什么意思?用btn.Name = btn.Text + i;? 没弄过c#,这个是别人写的,要修改点东西
  • 打赏
  • 举报
回复
btn.Name="button"+i;
lgstudyvc 2013-01-29
  • 打赏
  • 举报
回复
引用 13 楼 lonions 的回复:
引用 11 楼 lgstudyvc 的回复: 引用 9 楼 lonions 的回复:引用 6 楼 lgstudyvc 的回复: 补充下,还有句话 for(int i = 0; i < nCount; i++) { System.Windows.Forms.Button button = new System.Windows.Forms.Button();sname = sAry[i];/……
整个函数代码: funShift() { List<string> listAry = new List<string>(); System.Drawing.Point P1 = new System.Drawing.Point(); listAry = clsDBConnection.OpenData(strQuary, lsinfo); for (int i = 0; i < listAry.Count; i++) { System.Windows.Forms.Button btn = new System.Windows.Forms.Button(); btn.Text = listAry[i]; btn.Click += new EventHandler(funShift); btn.Location = new System.Drawing.Point(P1.X, P1.Y); btn.Size = new System.Drawing.Size(50, 25); btn.Visible = true; pnl_Shift.Controls.Add(btn);//pnl_Shift是个Panel if (CurrentTVWallName == btn.Name) btn.BackColor = System.Drawing.Color.LightGreen; else btn.BackColor = System.Drawing.Color.DarkGray; P1 = new System.Drawing.Point(btn.Location.X + 50, btn.Location.Y); } }
Onions 2013-01-29
  • 打赏
  • 举报
回复
引用 11 楼 lgstudyvc 的回复:
引用 9 楼 lonions 的回复:引用 6 楼 lgstudyvc 的回复: 补充下,还有句话 for(int i = 0; i < nCount; i++) { System.Windows.Forms.Button button = new System.Windows.Forms.Button();sname = sAry[i];//sAry已存了5个按……
如果lz每次都new新的button 那有设置button.Name么? 其实lz要是不介意 麻烦多贴点代码出来...
lgstudyvc 2013-01-29
  • 打赏
  • 举报
回复
引用 10 楼 kent111yu 的回复:
引用 2 楼 hjywyj 的回复: C# code?12345678 private void button_Click(object sender, EventArgs e) { Button btn = sender as Button; if (btn.BackColor == System.Drawing.Color.Lig……
btn。name是空的
lgstudyvc 2013-01-29
  • 打赏
  • 举报
回复
引用 9 楼 lonions 的回复:
引用 6 楼 lgstudyvc 的回复: 补充下,还有句话 for(int i = 0; i < nCount; i++) { System.Windows.Forms.Button button = new System.Windows.Forms.Button();sname = sAry[i];//sAry已存了5个按钮名字 if(sname == sCurName) b……
有个Panel每次new出来的Add到里面

110,533

社区成员

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

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

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