天天看點

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
{
 //使用者點選了頁面相關位址,浏覽器位址變更,邏輯處理
}

}
           

繼續閱讀