gpt4 book ai didi

c# - 使标 checkout 现和消失的计时器非常缓慢且无响应

转载 作者:太空宇宙 更新时间:2023-11-03 15:28:22 27 4
gpt4 key购买 nike

我想让它在单击表单时显示一个标签 x 毫秒。然后消失。

顺便说一句,我尝试将 timer1.Enabled=true 替换为 timer1.Start() 并将 timer1.Enabled=false 替换为 timer1.Stop() 但没有区别。

这是我的代码。我有一个表单,我以编程方式创建了一个标签,我已将其添加到表单中,并且我以编程方式创建了一个计时器。间隔设置为 300 毫秒(我以后可能会减少,但现在是 300 毫秒)。

想法是标签以 .Visible=false 开头,然后当单击表单时,标签应显示 300 毫秒,然后消失。我试图通过说计时器第一次运行来实现这一点,即启用后,使标签可见,第二次使标签不可见。

我管理即使不需要计算计时器运行了多少次,我管理它只是简单地说如果标签不可见(这必须是第一次运行刚刚启用的计时器)然后使其可见, 如果标签可见(即它必须是计时器第二次运行),则使其不可见并禁用计时器。

问题是它 react 迟钝,即 react 不灵敏且 react 缓慢。我点击,我有一个 MouseDown 事件,但在该事件和标 checkout 现之间存在延迟。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication16
{
public partial class Form1 : Form
{

Label label1;
Timer timer1;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

timer1 = new Timer();
timer1.Interval = 300;
timer1.Tick += timer1_Tick;

label1 = new Label();
label1.Text = "blah";
label1.Visible = false;
this.Controls.Add(label1);
}

private void timer1_Tick(object sender, EventArgs e)
{

if (label1.Visible == false) { label1.Visible = true; }
else { label1.Visible = false; timer1.Enabled = false; }

}

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
timer1.Enabled = true;
}

}
}

最佳答案

原因是开启定时器后,并没有立即运行tick方法。如果您将间隔延长到 3000 毫秒,您会清楚地看到这一点。因此,考虑到这一事实,解决方案就是这样。

    private void timer1_Tick(object sender, EventArgs e)
{
label1.Visible = false;
timer1.Enabled = false;
}

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
label1.Visible = true;
timer1.Enabled = true; //will wait timer1.interval milliseconds then run tick
}

关于c# - 使标 checkout 现和消失的计时器非常缓慢且无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34468144/

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