【发布时间】:2019-09-16 23:53:08
【问题描述】:
我正在制作带有面板和标签的 10x10 立方体,以检查光标在面板上输入了多少次,更改面板上的颜色以及显示数字的标签,如 1、2、3、4 等。颜色就像这 1-5 是蓝色,6-10 是绿色,11-15 是黄色,20 或更多是红色,我的问题是光标仅触摸标签时;只有标签改变但我的面板上的颜色没有改变或我的标签背景改变颜色但面板有其他颜色。
我之前问过一些类似的问题,但只检查了我面板上的颜色,所以这是代码:Old_Question:
private void panel_MouseEnter(object sender, MouseEventArgs e)
{
Control ctrl = sender as Control;
//get previous value from control tag or start at 0
int count = ctrl.Tag == null ? 0 : (int)ctrl.Tag;
//set backcolor of control based on tag number
if (count >= 20) ctrl.BackColor = Color.Red;
else if (count >= 15) ctrl.BackColor = Color.Yellow;
else if (count >= 10) ctrl.BackColor = Color.Lime;
else if (count >= 5) ctrl.BackColor = Color.Cyan;
else ctrl.BackColor = Color.SlateBlue;
ctrl.Tag = ++count;
}
然后,我修改了代码以使用我的标签。
private void panel_MouseEnter(object sender, EventArgs e)
{
Control ctrl = sender as Control;
Control lctrl = sender as Control;
//get previous value from control tag or start at 0
int count = ctrl.Tag == null ? 0 : (int)ctrl.Tag;
//set backcolor of control based on tag number
if (count >= 20) ctrl.BackColor = Color.Red;
else if (count >= 15) ctrl.BackColor = Color.Yellow;
else if (count >= 10) ctrl.BackColor = Color.Lime;
else if (count >= 5) ctrl.BackColor = Color.Cyan;
else ctrl.BackColor = Color.SlateBlue;
lctrl.Text = count.ToString();// count for my label
count++;
ctrl.Tag = count;
}
注意:我在标签和面板上添加了相同的事件。
【问题讨论】:
-
你为什么不限制你的条件。 . .if (count >= 20) ctrl.BackColor = Color.Red; else if (count >= 15 && count = 10 && count = 5 and count
-
因为我觉得不重要...
-
请显示截图?
-
@TerribleDog 我更新帖子
-
如果你只使用标签而不使用面板,代码应该更简单,使用更少的资源。