CefSharp ChromeDevToolsSystemMenu在当前上下文中不存在

【CefSharp ChromeDevToolsSystemMenu在当前上下文中不存在】当你尝试在Winforms应用程序的” 图标” 菜单的列表中显示” 显示Chrome开发工具” 选项时, 此错误很常见。
要解决此错误, 你需要创建此方法, 因为该方法在库中不存在。
我们的方法需要使用DLLImport方法, 因此我们需要添加一个引用来允许我们执行此操作, 并以你的形式导入以下组件:

using System.Runtime.InteropServices;

现在创建函数, 该函数将允许我们创建选项以在图标列表菜单中显示此选项:
private static class ChromeDevToolsSystemMenu{// P/Invoke constantspublic const int WM_SYSCOMMAND = 0x112; private const int MF_STRING = 0x0; private const int MF_SEPARATOR = 0x800; // ID for the Chrome dev tools item on the system menupublic const int SYSMENU_CHROME_DEV_TOOLS = 0x1; // P/Invoke declarations[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]private static extern bool AppendMenu(IntPtr hMenu, int uFlags, int uIDNewItem, string lpNewItem); public static void CreateSysMenu(Form frm){// in your form override the OnHandleCreated function and call this method e.g:// protected override void OnHandleCreated(EventArgs e)// {//ChromeDevToolsSystemMenu.CreateSysMenu(frm, e); // }// Get a handle to a copy of this form's system (window) menuvar hSysMenu = GetSystemMenu(frm.Handle, false); // Add a separatorAppendMenu(hSysMenu, MF_SEPARATOR, 0, string.Empty); // Add the About menu item// You can customize the message instead dev toolsAppendMenu(hSysMenu, MF_STRING, SYSMENU_CHROME_DEV_TOOLS, "& Chrome Dev Tools"); }}

请注意, 此方法本身不会执行任何操作。我们需要对其进行初始化, 并过滤需要在类中重写的WndProc事件中的事件。使用以下方法重写类中的WndProc:
/// < summary> ///Note that the < chromeBrowser> variable needs to be replaced by your own instance ofChromiumWebBrowser/// < /summary> protected override void WndProc(ref Message m){base.WndProc(ref m); // Test if the About item was selected from the system menuif ((m.Msg == ChromeDevToolsSystemMenu.WM_SYSCOMMAND) & & ((int)m.WParam == ChromeDevToolsSystemMenu.SYSMENU_CHROME_DEV_TOOLS)){chromeBrowser.ShowDevTools(); }}

注意:请谨慎操作, 如摘要所示, 你需要为自己的ChromiumWebBrowser实例替换chromeBrowser变量。
最后, 你可以继续使用ChromeDevToolsSystemMenu方法, 而不会出现类错误。在类(窗体)的构造函数中启用它是一个好习惯:
public Form1(){ // Other methods as InitializeComponents and chromiumInitializeComponent(); InitializeChromium(); // Enable the option in the icon list menu of the formChromeDevToolsSystemMenu.CreateSysMenu(this); }

    推荐阅读