gpt4 book ai didi

c# - 在 WebBrowser 控件中的某些非事件鼠标时间后隐藏鼠标光标

转载 作者:行者123 更新时间:2023-11-30 23:21:09 34 4
gpt4 key购买 nike

我试图让鼠标光标在鼠标不动一段时间后消失。 There's already a question on this但 WebBrowser 控件窗体没有鼠标事件。我有上面链接的问题中提到的这段代码:

public partial class Form1 : Form
{
public TimeSpan TimeoutToHide { get; private set; }
public DateTime LastMouseMove { get; private set; }
public bool IsHidden { get; private set; }

public Form1()
{
InitializeComponent();
TimeoutToHide = TimeSpan.FromSeconds(5);
this.MouseMove += new MouseEventHandler(Form1_MouseMove);
}

void Form1_MouseMove(object sender, MouseEventArgs e)
{
LastMouseMove = DateTime.Now;

if (IsHidden)
{
Cursor.Show();
IsHidden = false;
}
}

private void timer1_Tick(object sender, EventArgs e)
{
TimeSpan elaped = DateTime.Now - LastMouseMove;
if (elaped >= TimeoutToHide && !IsHidden)
{
Cursor.Hide();
IsHidden = true;
}
}
}

最佳答案

WebBrowserControl 不支持 MouseMove 事件。相反,您可以使用 MouseMove WebBrowser.Document.Body的事件.

然后应用您用于显示和隐藏光标的逻辑。在计时器 Tick 事件中检查最后一次移动是否在特定时间之前,使用 Cursor.Hide 隐藏光标.同样在 MouseMove 中使用 Cursor.Show 显示光标方法。

DateTime? lastMovement;
bool hidden = false;
void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.google.com");
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.MouseMove += Document_MouseMove;
}
void Document_MouseMove(object sender, HtmlElementEventArgs e)
{
lastMovement = DateTime.Now;
if (hidden)
{
Cursor.Show();
hidden = false;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
if (!lastMovement.HasValue)
return;
TimeSpan elaped = DateTime.Now - lastMovement.Value;
if (elaped >= TimeSpan.FromSeconds(2) && !hidden)
{
Cursor.Hide();
hidden = true;
}
}

注意

  • bool hidden 的工作是在ShowHide 之间保持平衡,因为如文档中所述:

    The Show and Hide method calls must be balanced. For every call to the Hide method there must be a corresponding call to the Show method.

  • 在文档完成时订阅 MouseMove,因为 Document 在完成 DocumentCompleted 事件引发之前将为 null。

  • 我检查了 lastMovement 是否没有值然后没有隐藏光标,以防止在用户将鼠标移到控件上之前在启动时隐藏光标。

关于c# - 在 WebBrowser 控件中的某些非事件鼠标时间后隐藏鼠标光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39353399/

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