控制WinForm控件上的键盘,鼠标事件响应

当界面锁屏时,需要在点击界面控件时,或键盘输入时,弹出解锁框,解锁后,才可以输入,否则响应鼠标键盘事件。

一 普通控件

普通控件,不响应键盘事件,设置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;

            }

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值