【问题标题】:Electron.Net default menu shows before click, then custom menu loadsElectron.Net 默认菜单在点击之前显示,然后自定义菜单加载
【发布时间】:2022-02-04 04:02:45
【问题描述】:

我正在使用 Electron.Net 来包装 ASP.Net MVC 网页,我目前正在尝试替换默认菜单。我有一个自定义菜单正在工作,代码正在替换菜单。但是当程序使用electronize start 运行时,默认菜单会显示,直到我单击最左边的默认项目(file)。一旦我点击该项目,我的菜单就会加载。

我认为这个问题与 MenuController 仅在与 Menu 交互时运行有关,所以我认为我需要实现某种异步功能。我不知道该怎么做,我在网上查过,但没有找到太多。

MenuController.cs

public IActionResult Index()
        {
            if (HybridSupport.IsElectronActive)
            {
                MenuItem[] menu = new MenuItem[]
                {
                    new MenuItem
                    {
                        Label = "File",
                        Submenu = new MenuItem[]
                        {
                            new MenuItem
                            {
                                Label = "Open",
                                Accelerator = "CmdOrCtrl+O"
                            },
                            new MenuItem
                            {
                                Label = "Save",
                                Accelerator = "CmdOrCtrl+S"
                            },
                            new MenuItem
                            {
                                Label = "Save As",
                                Accelerator = "CmdorCtrl+Shift+S"
                            }
                        }
                    },

                    new MenuItem
                    {
                        Label = "Edit",
                        Submenu = new MenuItem[]
                        {
                            new MenuItem
                            {
                                Label = "Preferences"
                            }
                        }
                    },

                    new MenuItem
                    {
                        Label = "View",
                        Submenu = new MenuItem[]
                        {
                            new MenuItem
                            {
                                Label = "TODO"
                            },

                            new MenuItem
                            {
                                Label = "Reload",
                                Click = () =>
                                {
                                    Electron.WindowManager.BrowserWindows.ToList().ForEach(BrowserWindow =>
                                    {
                                        if (BrowserWindow.Id != 1)
                                            BrowserWindow.Close();

                                        else
                                            BrowserWindow.Reload();
                                    });
                                }
                            },

                            new MenuItem
                            {
                                Label = "Toggle Full Screen",
                                Accelerator = "CmdOrCtrl+F",
                                Click = async () =>
                                {
                                    bool isFullScreen = await Electron.WindowManager.BrowserWindows.First().IsFullScreenAsync();
                                    Electron.WindowManager.BrowserWindows.First().SetFullScreen(!isFullScreen);
                                }
                            },

                            new MenuItem
                            {
                                Type = MenuType.separator
                            },

                            new MenuItem
                            {
                                Label = "Open Developer Tools",
                                Accelerator = "CmdOrCtrl+Shift+I",
                                Click = () =>
                                {
                                    Electron.WindowManager.BrowserWindows.First().WebContents.OpenDevTools();
                                }
                            }
                        }
                    },

                    new MenuItem
                    {
                        Label = "Navigate",
                        Submenu = new MenuItem[]
                        {
                            new MenuItem
                            {
                                Label = "Home",
                                Submenu = new MenuItem[]
                                {
                                    new MenuItem
                                    {
                                        Label = "Home",
                                        Click = () =>
                                        {
                                            Electron.WindowManager.BrowserWindows.First().LoadURL($"http://localhost:{BridgeSettings.WebPort}/");
                                        }
                                    },

                                    new MenuItem
                                    {
                                        Label = "Privacy",
                                        Click = () =>
                                        {
                                            Electron.WindowManager.BrowserWindows.First().LoadURL($"http://localhost:{BridgeSettings.WebPort}/Privacy");
                                        }
                                    }
                                }
                            },

                            new MenuItem
                            {
                                Type = MenuType.separator
                            },

                            new MenuItem
                            {
                                Label = "Editor",
                                Submenu = new MenuItem[]
                                {
                                    new MenuItem
                                    {
                                        Label = "Editor",
                                        Click = () =>
                                        {
                                            Electron.WindowManager.BrowserWindows.First().LoadURL($"http://localhost:{BridgeSettings.WebPort}/Editor/");
                                        }
                                    }
                                }
                            }
                        }
                    }
                };

                Electron.Menu.SetApplicationMenu(menu);
            }

            return Ok();
        }

视图/编辑器/Index.cshtml

@model CircuitSharp.Models.EditorModel

@{
    Layout = null;
}
<!--
    EDITOR INDEX PAGE
-->
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Editor</title>

    <!-- 
        IMPORTING THE CUSTOM MENU
    -->
    <link rel="import" href="Menu" />
</head>
<body>



@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
</body>
</html>

【问题讨论】:

    标签: c# html asp.net electron electron.net


    【解决方案1】:

    更新:我只是在第二天重新运行了该程序,现在它可以工作了。 ¯_(ツ)_/¯

    【讨论】:

      猜你喜欢
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 2019-10-02
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多