Winform嵌套的CefSharp浏览器,在触摸屏下,点击输入框无法自动弹出软键盘,如何解决?

背景:在我的Winform中使用了CefSharp goodle浏览器,在触摸屏下,点击输入框无法自动弹出软键盘;

       但是相同的网址在浏览器中打开,点击输入框时,会自动弹出软键盘。请参考下面的图片:

img

img

如上面的图片所示,我使用的是触摸屏,没有键盘,第一张图是在主流浏览器打开的,一旦点击输入框立马弹出软键盘;但是在嵌套的CefSharp 浏览器中却不行。

恳请各位指点,有什么解决方案呢?谢谢!

这个问题的出现在Github CefSharp 的ISSURE有提到过:


跟版本有关系。

解决方案

当时被认可的解决方案

  • 1、添加"disable-usb-kyboard-detect=1"为命令行参数
          CefSettings settings = new CefSettings();
          settings.CefCommandLineArgs.Add("disable-usb-keyboard-detect", "1");
          Cef.Initialize(settings);
    
    2、这样每次触摸输入字段时,都会弹出 Windows OnScreen-Keyboard。

    注意:使用 Cef v47.0.4 测试并安装 Chrome v60.0.3112.101。
    这个是当时被认可的方法答案,你可以去试下这个方法对你是否起作用。

如果不行的话,你可能还需要对版本进行降级。
因为按照这个Issure 本年3月份最新的回复,官方的回答还是参考这个方法进行操作。
也就是说 目前 cef可能还不支持最新版本的chrome浏览器

关于这个问题的详细讨论和解决方法,你可以参考下链接:


如果上述方法不生效

或许你可以试下这个方法:


(这个方法不确定是否有效,因为没有人点赞,是写问题的人最后自己回答的答案,你可以试下)

浏览器设置

   CefSharpSettings.ShutdownOnExit = true;
   CefSettings settings = new CefSettings();
   settings.CachePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\CEF";
   settings.CefCommandLineArgs["print-preview"]= "disable";
   Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);

键盘调用

ScreenKeyboard.Invoke(new Action(() =>
                        {
                            ScreenKeyboard.Visible = (task.Exception == null && task.Result);
                        }));

参考链接:


如有问题及时沟通

太感谢您了,问题在win10是解决了,但是如果是win11就不行,一般不会弹出,偶尔才会弹出来。

为什么要用C#的Winform包一个浏览器呢,是为了在触屏上不显示浏览器的地址栏并且全屏显示吗? 如果是,可以看看这里:https://blog.csdn.net/hyjchina/article/details/124973747?spm=1001.2014.3001.5502
同时这里有个资源,可以下载看看哦,
https://download.csdn.net/download/hyjchina/85462347