[C#问题--WebBrowser继续追踪]WebBrowser在Form程序中使用的感想3

来源:互联网 发布:ubuntu改成中文 编辑:程序博客网 时间:2024/05/01 09:33

    呵呵,同志们,我又回来了!把身上的IC,IQ卡统统交出来!!!

    在解决了页面事件的难题后,心情就不再像天气那么阴沉了,人呢,总是在学习中不断成长起来的。今天似乎是个好日子,心情特别好,也许,跟中午火箭干掉太阳有关吧,我盯着文字直播的页面心里扑通扑通的,火箭总是喜欢在第四节跟我们玩心跳游戏,15分的领先优势在第四节化为乌有,要不是我们家大姚即时站了出来,恐怕凶多吉少啊,不多说了,我希望火箭今年是总冠军!!!

    还有一件郁闷的事。。。。。。很郁闷的。。。。。。竟然有一辆公交车的路线比我坐了一年的公交路线离公司更近,搞笑的是,2辆车都是同一个站点。555555。。。

    今天遇到WebBrowser中的一个问题,在VC写的时候也遇到,就是内嵌的WebBrowser控件依然有着IE中的各个快捷键操作,换句话来说,我按了F5,页面就被刷新了,页面内容保存在缓存中,这样被刷就刷没了,所以,这肯定是个问题,另外,ctrl+N,ctrl+p分别是打开一个IE和打印本页,如果在客户使用的过程中正巧按上了这些键,那用户不恼死。网上查了查资料,发现国外的牛人不是一般的牛X,他们竟然把WebBrowser的ISetDocUI好像是这样的接口都给重新实现了一遍,Oh my god,难道没有解决的方法了?

    经过我这么一琢磨,倒是被我想出了一个方法。依然像我前一篇中所说的,利用我提供的方式建立Doc的OnKeyDown事件,因为我发现按键盘上的键时,这个事件被触发了。

                // 注册键盘按下事件。
                CHTMLEventHandler KeyDownDHandler = new CHTMLEventHandler(m_pHtmlDoc2);
                KeyDownDHandler.m_DHTMLEventHandler 
+= new DHTMLEvent(KeyDownEventHandler);
                m_pHtmlDoc2.onkeydown 
= KeyDownDHandler;

    然后呢,当然是实现委托的事件:

        private void KeyDownEventHandler(IHTMLEventObj e)
        
{
            
if(e.ctrlKey)
            
{
                
switch(e.keyCode)
                
{
                    
case 70:    // F键码。ctrl+F,表示打开查找对话框。
                    case 78:    // N键码。ctrl+N,表示新打开一个IE。
                    case 80:    // P键码。ctrl+p,表示打印该页,全部过滤掉。
                        goto ignore;
                }

            }

            
else
            
{
                
// 116 为 Keys.f5 的值。
                if(e.keyCode == 116)
                
{
                    
goto ignore;
                }
    
            }

            
            
return;
            
            ignore:
                e.keyCode 
= 0;
                e.returnValue 
= false;
        }

    OK,有详细的注释,就不用我再像居委会老大妈那样罗嗦的解释了,明白了吧?原理就是改写键代码的值,我改为0,再传到WebBrowser内部的时候,它是找不到对应的快捷键的,就这么简单~

    不罗嗦了~这是WebBrowser系列的最后一篇了~相信这个系列对很多人都能有非常非常大的帮助~有用了,别忘了给俺鼓励一下,顶顶哦~~~