C# 怪异的按钮图像行为

C# 怪异的按钮图像行为,c#,.net,winforms,image,controls,C#,.net,Winforms,Image,Controls,我有一个按钮,它有两种状态;正常且处于报警状态。正常情况下,按钮的外观如下所示: 在报警状态下,gif格式的红色和橙色之间闪烁,如下所示: 下面是一些决定按钮状态的代码段: if (blah blah == true) { ((Button)mainUI.Controls["btn" + device.deviceButtonNumber]).Image = null; //MessageBox.Show("Button " + device.deviceButtonNumber.T

我有一个按钮,它有两种状态;正常且处于报警状态。正常情况下,按钮的外观如下所示:

在报警状态下,gif格式的红色和橙色之间闪烁,如下所示:

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

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的原因是,我认为它可能是将图像堆叠在彼此的顶部,但这似乎并没有修复它

我的问题是,经过一段时间的轮询设备来检查按钮的状态……按钮会随机变化,看起来是这样的:


我有点想不通为什么会发生这种情况,在它变成buttonstate之前,它的时间似乎是不同的:奇怪。有人知道为什么会发生这种情况吗?

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

尝试使用

((按钮)mainUI.Controls[“btn”+device.DeviceButtonnNumber])。Image=新映像(Properties.Resources.red\u橙色)


从资源中的图像创建一个对象。同时尝试使用不在资源中的图像,即:外部

我们是在谈论
系统.Windows.Forms.Button
还是
系统.Windows.Controls.Button
这里?它们是System.Windows.Forms.Button按钮。“大红x的厄运”表示控件在尝试绘制时遇到异常。您是否使用按钮进行自定义绘制,或者只是简单地切换图像/背景色?看到抛出的异常了吗?它在try-catch语句中,但没有抛出任何异常。我只是简单地在.gif图像和背景色之间切换。我只是想改变一些逻辑,然后我会尝试这个修复。我认为它是这样的……基本上它一直在尝试刷新自己,我想它会随机尝试刷新它的图像,但它还没有完成最后一个图像的加载,所以它找不到它。或者类似的。我改变了一些循环,移动了一些变量,它停止了错误的循环。然后它成功了。