C# 中的一个长按标签

A Label in C# That has a long press

嗨,我在我的表格上有一个标签,我想在它执行显示消息框之类的功能之前按下它 2.5 秒我告诉它。任何东西都会 help.Thanks.

 private void Ltitelpress(object sender, EventArgs e)
    {
        lTitel.MouseDown+=delegate(object o, MouseEventArgs args) {  };
       Timer timer = new Timer();
        timer.Start();
        timer.Interval = 2500;
        if (timer.Interval == 2500)
        {
        lTitel.MouseUp+= delegate(object a, MouseEventArgs args)
        {
            timer.Stop();
            MessageBox.Show("Good Job");
        };

        }
    }

问题是我什至不知道这段代码是否接近 accurrite

只需将您的代码移动到 LabelMouseUP 事件,它只会在您从标签上释放鼠标点击时触发

private void label_MouseUP()
///codes here

或者如果你想以困难的方式做到这一点:)

private void label_MouseDown()
  var watch = System.Diagnostics.Stopwatch.StartNew();
  double elapsedMs = watch.ElapsedMilliseconds;

   if (elapsedMs > 2500)
    { 
     ////codes here
    }

在 class 级别(表单级别)声明秒表,以便您可以从 2 个不同的事件过程访问它。

private Stopwatch sw = new Stopwatch();
        private void label1_MouseDown(object sender, MouseEventArgs e)
        {
            sw.Start();
        }
        private void label1_MouseUp(object sender, MouseEventArgs e)
        {
            sw.Stop();
            if (sw.ElapsedMilliseconds > 2500)
                MessageBox.Show("Mouse held down long enough.");
            else
                MessageBox.Show("Not long enough.");
        }