首页 > 解决方案 > 是否可以从 CEFSHARP 控件向主窗体发送键盘事件?

问题描述

我想避免必须实现IKeyboardHandler接口来处理我的键盘事件。这是我为键盘快捷键所拥有的一个示例,当应用程序打开时可以正常工作:

private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Modifiers == Keys.Control)
            {
                switch (e.KeyCode)
                {
                    case Keys.F12:
                        //shortcut 1
                        break;
                    case Keys.N:
                        //shortcut 2 new windows
                        break;
                }
            }
        }

并以这种方式初始化浏览器的控件:

public void InitializeChromium(string Url)
        {
            CefSettings settings = new CefSettings();
            Cefinit = Cef.Initialize(settings);
            BrowserControl = new ChromiumWebBrowser(Url)
            {
                Name = "WebBrowser",
                MenuHandler = new SearchContextMenuHandler(this),
                DownloadHandler = new DownloadHandler(download_img)
            };
            Controls.Add(BrowserControl);
        }

但是一旦控件获得焦点,表单就无法接收键盘快捷键,例如:ctrl + N:

有没有办法将这些事件重定向到主窗体? 或最好的方法: 是否有键盘事件锁,如何删除?

标签: c#winformscefsharp

解决方案


推荐阅读