首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Electron.Net默认菜单显示在单击之前,然后加载自定义菜单。

Electron.Net默认菜单显示在单击之前,然后加载自定义菜单。
EN

Stack Overflow用户
提问于 2022-02-02 21:59:26
回答 1查看 82关注 0票数 0

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

我认为这个问题只与菜单交互时运行的MenuController有关,所以我认为我需要实现某种异步功能。我不知道该怎么做,我在网上查了一下,但没有找到多少。

MenuController.cs

代码语言:javascript
复制
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

代码语言:javascript
复制
@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>
EN

回答 1

Stack Overflow用户

发布于 2022-02-03 20:02:45

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70963414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档