当界面锁屏时,需要在点击界面控件时,或键盘输入时,弹出解锁框,解锁后,才可以输入,否则响应鼠标键盘事件。
一 普通控件
普通控件,不响应键盘事件,设置KeyPress事件的Handled = ture;
void parentControl_KeyPress(object sender, KeyPressEventArgs e)
{
ShowLockScreenForm("parentControl_KeyPress");
if (screenIsUnLocked == false)
{
//取消事件响应
e.Handled = true;
}
}
二 ToolStrip 子控件
ToolStrip 子控件不能用 toolStrip.Controls ,而要用
foreach (ToolStripItem subControl in (parentControl as System.Windows.Forms.ToolStrip).Items)
{
RegisterLockScreenEvent_Sub(subControl);
}
来遍历
三 WebBrowser子控件
将HtmlElementEventArgs 的BubbleEvent,ReturnValue 设为 false
void htmlcontrol_KeyPress(object sender, HtmlElementEventArgs e)
{
ShowLockScreenForm("htmlcontrol_KeyPress");
if (screenIsUnLocked == false)
{
e.BubbleEvent = false;
e.ReturnValue = false;
}
}
四 WebBrowser禁用F5及右键
//锁定右键
webBrowser1.IsWebBrowserContextMenuEnabled = false;
//锁定快捷键
webBrowser1.WebBrowserShortcutsEnabled = false;
五 完整代码
private void RegisterLockScreenEvent_Sub(Control parentControl)
{
foreach (Control subControl in parentControl.Controls)
{
RegisterLockScreenEvent_Sub(subControl);
}
if (parentControl is WebBrowser )
{
foreach (HtmlElement htmlcontrol in (parentControl as WebBrowser).Document.All)
{
RegisterLockScreenEvent_Sub(htmlcontrol);
}
}
parentControl.MouseDown += new MouseEventHandler(control_MouseDown);
parentControl.KeyDown += new KeyEventHandler(control_KeyDown);
parentControl.KeyPress += new KeyPressEventHandler(parentControl_KeyPress);
}
private void RegisterLockScreenEvent_Sub(HtmlElement parentControl)
{
foreach (HtmlElement htmlcontrol in parentControl.Children)
{
RegisterLockScreenEvent_Sub(htmlcontrol);
}
parentControl.KeyPress += new HtmlElementEventHandler(htmlcontrol_KeyPress);
parentControl.MouseDown += new HtmlElementEventHandler(htmlcontrol_MouseDown);
parentControl.Click += new HtmlElementEventHandler(htmlcontrol_MouseDown);
}
void htmlcontrol_MouseDown(object sender, HtmlElementEventArgs e)
{
ShowLockScreenForm("htmlcontrol_MouseDown");
if (screenIsUnLocked == false)
{
//取消事件响应
e.BubbleEvent = false;
e.ReturnValue = false;
}
}
void htmlcontrol_KeyPress(object sender, HtmlElementEventArgs e)
{
ShowLockScreenForm("htmlcontrol_KeyPress");
if (screenIsUnLocked == false)
{
e.BubbleEvent = false;
e.ReturnValue = false;
}
}
void parentControl_KeyPress(object sender, KeyPressEventArgs e)
{
ShowLockScreenForm("parentControl_KeyPress");
if (screenIsUnLocked == false)
{
//取消事件响应
e.Handled = true;
}
}
private void control_MouseDown(object sender, MouseEventArgs e)
{
ShowLockScreenForm("control_MouseDown");
}
private bool screenIsUnLocked = false;
private void control_KeyDown(object sender, KeyEventArgs e)
{
ShowLockScreenForm("control_KeyDown");
if (screenIsUnLocked == false)
{
e.Handled = true;
}
}