奇怪的按钮图像行为

时间:2012-06-13 12:39:33

标签: c# .net winforms image controls

我有一个有两种状态的按钮;正常和警报。在正常情况下,按钮看起来像这样:

button state: normal

并且在处于警报状态时,以gif格式在红色和橙色之间闪烁,如下所示:

button state : in alarm button state: in alarm

下面是一些决定按钮状态的片段:

if (blah blah == true)
{
  ((Button)mainUI.Controls["btn" + device.deviceButtonNumber]).Image = null;
  //MessageBox.Show("Button " + device.deviceButtonNumber.ToString() + "is now flashing");
  ((Button)mainUI.Controls["btn" + device.deviceButtonNumber]).Image = Properties.Resources.red_orange;
}
else
{
  //MessageBox.Show("Button " + device.deviceButtonNumber.ToString() + "is now green");
  ((Button)mainUI.Controls["btn" + device.deviceButtonNumber]).Image = null;
  ((Button)mainUI.Controls["btn" + device.deviceButtonNumber]).BackColor = Color.Green;
}

我将图片设置为null的片段中的原因是因为我认为它可能是将图像叠加在一起,但这似乎没有修复它。

我遇到的问题是,经过一段时间的轮询设备检查按钮的状态....按钮将随机改变,看起来像这样:

Weird state

我对于为什么会发生这种情况感到有些困惑,似乎在转向按钮状态之前的时间量有所不同:很奇怪。任何人都知道为什么会这样?

1 个答案:

答案 0 :(得分:2)

红十字表示绘制按钮时出错,红十字图像是按钮的默认错误图像。我认为您在嵌入资源中遇到问题检查资源中是否存在所有图像如果那时您可能没有创建图像对象。

尝试使用

((Button)mainUI.Controls["btn" + device.deviceButtonNumber]).Image = new Image(Properties.Resources.red_orange);

从资源中的图像创建一个对象。也尝试使用不在资源中的图像,即:external