WinForm按钮背景图像仅更新每次运行

时间:2014-01-07 20:02:06

标签: c# winforms image

我想要一个闪烁的LED - 交替地在PictureBox中点亮,然后是暗图像 - 在运行期间出现(我点击一个按钮开始)。运行开始时图像亮起,运行结束时图像变暗。这总是有效的。

此代码:

this.timer.SynchronizingObject = this;
this.timer.Interval = 250;
this.timer.Elapsed += (s, ea) =>
{
    this.ledLit = !this.ledLit;
    ShowInLog(this.ledLit ? "/" : "\\");
    this.picMarking.BackgroundImage = this.ledLit ? this.imageStopped : this.imageRunning;
    this.picMarking.Refresh();
};

非常适合在跑步期间显示闪烁的LED图像......每隔一次运行。

在每个偶数编号的调用中,交替斜线的显示表明计时器正在工作,但背景图像不会更新(除了可能是罕见的闪烁)。

为什么呢?如何使其适用于每次调用?

2 个答案:

答案 0 :(得分:0)

这是我为你的“闪烁”效果放在一起的一些快速代码:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace Blinker
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Interval = 250;
            timer1.Tick += timer1_Tick;
            timer1.Start();
        }

        void timer1_Tick(object sender, EventArgs e)
        {
            Console.WriteLine("Tick");
            pictureBox1.BackColor = (pictureBox1.BackColor == System.Drawing.Color.Red) ? System.Drawing.Color.Black : System.Drawing.Color.Red;
        }
    }
}

我在计时器的Tick事件中使用事件处理程序来触发闪烁。您可以使用BackColor属性调整图像。这是一种快速而肮脏的方法,但它实现了眨眼效果。

答案 1 :(得分:0)

我在这里找到了问题的答案:Custom event handler is repeating itself...

我的问题是我每次都订阅了tick事件,而不只是一次。