C# 在WebBrowser控件中的某个非活动鼠标时间后隐藏鼠标光标
我试图使鼠标光标在鼠标不移动的特定时间后消失。但是WebBrowser控件窗体没有鼠标事件。我有上述问题中提到的代码:C# 在WebBrowser控件中的某个非活动鼠标时间后隐藏鼠标光标,c#,winforms,webbrowser-control,C#,Winforms,Webbrowser Control,我试图使鼠标光标在鼠标不移动的特定时间后消失。但是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
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
事件。相反,您可以使用event of
然后应用用于显示和隐藏光标的逻辑。在计时器勾选事件检查中,如果上次移动在特定时间之前,请使用隐藏光标。同样在MouseMove
中,使用方法显示光标
注意
bool hidden
的工作是在Show
和Hide
之间保持平衡,因为如文档中所述:
显示和隐藏方法调用必须平衡。每次打电话到
Hide方法必须有对Show方法的相应调用
- 文档完成时订阅
MouseMove
,因为document
在完成DocumentCompleted
事件之前将为空
- 我检查了
lastmotation
是否没有值,然后没有隐藏光标,以防止在用户将鼠标移到控件上之前在启动时隐藏光标
非常感谢@RezaAghaei,但代码对我不起作用。。。光标保持显示状态…您可以简单地在干净的环境中安排测试。1) 创建一个表单
。2) 在表单上放置一个WebBrowser
。3) 在窗体上放置一个计时器
,并将其间隔
设置为300
,将其启用
设置为true
4)将加载
窗体事件附加到加载
。5) 将DocumentCompleted
web浏览器事件附加到webBrowser1\u DocumentCompleted
6)将Tick
计时器事件附加到timer1\u Tick
。7) 运行程序并将鼠标移到web浏览器上,大约几秒钟内不要移动,然后再次移动并查看结果。好的!我的问题是没有启用计时器。再次非常感谢你。完美答案!雷扎,我刚刚意识到如果我专注于网络浏览器上的flash元素,光标会一直显示,你知道为什么吗?嗯,目前我对flash一无所知。也许flash active-x可以自己控制光标。如果你不能用flash解决这个问题,可以发布一个新的问题,其中包含复制步骤,其中包含一个URL来复制这个问题,我来看看:)
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;
}
}