[英]C# Winform Menustrip Toolstripitem change image on mouse hover time delay issue
[英]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.