c# - 是否可以从 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:
有没有办法将这些事件重定向到主窗体? 或最好的方法: 是否有键盘事件锁,如何删除?
解决方案
推荐阅读
- teamcity - 如何在没有常见工件、VCS 根或触发构建链的情况下为冒烟测试配置构建链?
- reactjs - 反应原生样式
- asp.net - 如何在 ASP.NET Core Razor 页面中使用路由中间件
- iis - 我将我的 ASP.NET Core 应用程序发布到本地 IIS 服务器,但它不是最新的。发生了什么?
- sql-server - SQL/SSIS 编码检测
- django-rest-framework - django-filter 不适用于 django-rest-framework
- c# - ListViewItem 中 Expander 未显示的内容
- python-3.x - 无法通过 selenium webdriver 从下拉菜单中选择选项
- avfoundation - 是否可以将 AVAudioRecorder 静音?
- git - 为什么拉取请求会导致分叉落后于上游?