【问题标题】:weird button image behaviour奇怪的按钮图像行为
【发布时间】:2012-06-16 10:02:49
【问题描述】:

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

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

下面是一些决定按钮状态的sn-ps:

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;
}

我在 sn-ps 中将图像设置为 null 的原因是因为我认为它可能将图像堆叠在一起,但这似乎并没有解决它。

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

我有点不知道为什么会这样,在它变成按钮状态之前的时间似乎有所不同:奇怪。有人知道为什么会这样吗?

【问题讨论】:

  • 这里是System.Windows.Forms.Button 还是System.Windows.Controls.Button
  • 它们是 System.Windows.Forms.Button 按钮。
  • “厄运的大红色 x”表示您的控件在尝试绘制时遇到了异常。您是在使用按钮进行任何自定义绘画还是只是切换图像/背景色?您是否看到任何异常抛出?
  • 它在 try catch 语句中,但没有抛出任何异常。我只是在 .gif 图像和背景色之间切换。

标签: c# .net winforms image controls


【解决方案1】:

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

尝试使用

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

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

【讨论】:

  • 我只是要改变一些逻辑,然后我会尝试这个修复。
  • 我认为它类似于......基本上它试图不断刷新自己,我认为它会随机尝试刷新它的图像并且它还没有完成加载最后一个,所以找不到。或类似的东西。我改变了一些循环并移动了一些变量,它停止了不正确的循环。然后它起作用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2010-11-14
相关资源
最近更新 更多