wpf cefsharp 支持中文輸入


大家在開發WPF客戶端程序的時候,涉及到瀏覽器的話無非就用兩種:首先想到的是微軟自帶的WebBrowser,但是往往用自帶的東西就會問題一大堆:

  (1)WebBrowser控件無法保證版本的一致,如果你在XP下,那么你就有可能調用IE6.0的版本,請問在HTML5流行的今天,IE6.0能做什么。同時在Window7或者更高的系統版本下WebBrowser調用的版本也可能與本機版本不一致。

  (2)HTML頁面兼容性問題,不同的瀏覽器對同一個頁面的解釋上會有頁面的兼容問題。

  (3)可控性。.net下的WebBrowser雖然提供很多的接口,來控制WebBrowser里的HTML,但是如果你用WebBrowser開發B/S與C/S混合軟件呢?比如過用WebBrowser開發一個HTML控件你將有更多兼容性的問題,可控制的問題。

辣么多的問題我還是找個開源的吧,放棄它!

 cefsharp:

      一個開源的基於Chromium內核開發的適用WPF的瀏覽器,用了一段時間蠻不錯的,但是在用的過程中發現了一個問題,不支持中文輸入,通過github論壇發現還真有人提出這個Bug,但是都沒有給出解決方案,然而並不能放棄,經過長時間的資料查找終於找到了解決辦法,和大家一起分享:

     需要重寫ChromiumWebBrowser這個類中的OnPreviewTextInput這個方法,代碼如下:

    

  protected override void OnPreviewTextInput(TextCompositionEventArgs e)
        {
            if (!string.IsNullOrEmpty(e.Text) && e.Text.Length > 0)
            {
                for (int i = 0; i < e.Text.Length; i++)
                {
                    managedCefBrowserAdapter.SendKeyEvent((int)WM.CHAR, (int)e.Text[i], ((IntPtr)0).CastToInt32());
                    //browser.GetHost().SendKeyEvent((int)WM.CHAR, (int)e.Text[i], ((IntPtr)0).CastToInt32());
                }
                e.Handled = true;
            }
        }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM