gpt4 book ai didi

C# winform 闪烁标签背景色延迟

转载 作者:可可西里 更新时间:2023-11-01 09:53:06 31 4
gpt4 key购买 nike

我有一个 winform 应用程序,我需要使标签背景颜色闪烁。我正在尝试使用 for 循环和 Thread.Sleep 来做到这一点,但不起作用。感谢您的帮助和建议:

private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
System.Threading.Thread.Sleep(1000); // Set fast to slow.
if (label1.BackColor == Color.Red)
label1.BackColor = Color.Transparent;
else
label1.BackColor = Color.Red;
}
}

最佳答案

为此任务使用 UI 计时器,而不是休眠。你让主线程一直处于休眠状态,并且你正在阻止用户输入。使用 Thread.Sleep 几乎总是表明您做错了什么。 Thread.Sleep 正确的情况很少。具体来说,让 UI 线程休眠是永远不正确的。

放一个Timer在表单组件和 Tick 事件中,不断更改标签的背景颜色。

例如:

// Keeps track of the number of blinks
private int m_nBlinkCount = 0;

// ...

// tmrTimer is a component added to the form.
tmrTimer.Tick += new EventHandler(OnTimerTick);

m_nBlinkCount = 0;
tmrTimer.Interval = 1000; // 1 second interval
tmrTimer.Start();

// ...

private void OnTimerTick ( Object sender, EventArgs eventargs)
{
if (label1.BackColor == Color.Red)
label1.BackColor = Color.Transparent;
else
label1.BackColor = Color.Red;

m_nBlinkCount++;

if ( m_nBlinkCount >= 10 )
tmrTimer.Stop ();
}

关于C# winform 闪烁标签背景色延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27847428/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com