簡體   English   中英

如何延遲鼠標懸停時間?

[英]How to delay mouse hover time?

我正在用C#編寫應用程序。 每當我將光標懸停在按鈕上時,都應顯示消息。 另外,如果我再次將鼠標懸停了3秒鍾,則應該在按鈕上顯示一條消息“鼠標已經懸停3秒鍾”。

嘗試使用此方法解決問題:

private void label1_MouseHover(object sender, EventArgs e)
{
    label_Click(null, null); // this will fire click event
}

您必須設置一個計時器並使用MouseEnter / MouseLeave事件,如下所示:

    Timer t;
    public MainWindow()
    {
        InitializeComponent();
        t = new Timer(3000);
        t.Elapsed += t_Elapsed;


    }

    void t_Elapsed(object sender, ElapsedEventArgs e)
    {
        MessageBox.Show("Your mouse has been hovering for 3 seconds");
    }


    private void btn_MouseEnter(object sender, MouseEventArgs e)
    {
        //MessageBox.Show("Hovered");
        t.Start();
    }

    private void btn_MouseLeave(object sender, MouseEventArgs e)
    {
        t.Stop();
    }

Xaml:

<Button x:Name="btn" Content="Button" HorizontalAlignment="Left" MouseEnter="btn_MouseEnter" MouseLeave="btn_MouseLeave" Click="btn_Click"/>

嘗試為此使用System.Windows.Forms.Timer對象。

例如,假設您希望控件在游標達到三(3)秒后運行MessageBox ,這是可以執行的操作:

[C#]

// Used to store the counting value.
private int _counter = 0;

private void control_MouseHover(object sender, EventArgs e)
{
    // Create a new Timer object.
    Timer timer = new Timer();

    // Set the timer's interval.
    timer.Interval = 1000;

    // Create the Tick-listening event.
    _timer.Tick += delegate(object sender, EventArgs e) 
    {
        // Update the counter variable.
        _counter++;

        // If the set time has reached, then show a MessageBox.
        if (_counter == 3) {
            MessageBox.Show("Three seconds have passed!");
        }
    };

    // Start the timer.
    _timer.Start();
}

[VB.NET]

 Dim _counter As Integer 

 Private Sub Control_MouseHover(ByVal sender As Object, ByVal e As EventArgs) _
 Handles Control.MouseHover

    ' Create a new Timer object.
    Dim timer As New Timer()

    ' Set the timer's interval.
    timer.Interval = 1000

    ' Create the Tick-listening event.
    AddHandler _timer.Tick, Sub(sender As Object, e As EventArgs)

        ' Update the counter variable.
        _counter += 1

        ' If the set time has reached, then show a MessageBox.
        If _counter = 3 Then
            MessageBox.Show("Three seconds have passed!")
        End If

    End Sub

    ' Start the timer.
    _timer.Start()

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM