天天看点

C#CefSharp winfrom单击事件替代方案

最近写了个CefSharpd的客户端嵌套web的程序,发现CefSharpd的单击事件没法响应,好么,那把这个Click事件写在事件列表里干啥?糊弄人吗这不是?

C#CefSharp winfrom单击事件替代方案

想来想去,想到了个替代方案,使用计时器替代,既然是浏览器和点击事件,肯定少不了地址的变更,chromium内核,我是直接在窗体加载里面写的,界面上就拖了一个timer控件:

C#CefSharp winfrom单击事件替代方案

窗体加载事件的代码:

private CefSharp.WinForms.ChromiumWebBrowser open { get; set; }
        /// <summary>
        /// 当前地址
        /// </summary>
       public string current { get; set; }
        private void Form1_Load(object sender, EventArgs e)
        {
            //设置全屏
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
            //打开计时器
            timer1.Interval = 100;
            timer1.Start();
            //实例化
            open = new CefSharp.WinForms.ChromiumWebBrowser(url);
            //设置大小样式
            open.Dock = DockStyle.Fill;
            //获取当前地址
            current = open.Address;
            this.Controls.Add(open);
        }
           

效果:

C#CefSharp winfrom单击事件替代方案

在timer_Tick事件里,监听浏览器地址:

private void timer1_Tick(object sender, EventArgs e)
 {
 var str=open.Address;
 if(str==current){
  //浏览器当前地址没变,不处理
}
else
{
 //用户点击了页面相关地址,浏览器地址变更,逻辑处理
}

}
           

继续阅读