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;
            }
        }

  

转载于:https://www.cnblogs.com/unknowngood-1990/p/5749092.html

你可能感兴趣的:(wpf cefsharp 支持中文输入)