首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表单间共享MenuStrip

表单间共享MenuStrip
EN

Stack Overflow用户
提问于 2013-12-13 20:26:06
回答 2查看 999关注 0票数 0

我有一个小小的问题和这个问题有关:How to create navigation inside program Form - noob再次提醒。

我试图在c#程序中创建一个导航,就像网站上的动态下拉菜单。我使用的是不同的C#表单,比如每一个都是不同的网页内容。

是否可以在窗体之间与导航共享菜单?(最简单的网页相似性:包含(‘menu.php’)-把所有的东西放在一个文件中,我在每个网页中嵌入)

否则,需要将菜单条复制到每个新表单(然后是menustrip更改,然后呢?)再复制一次?:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-13 13:13:24

您可以通过将选项卡与Srip连接起来,如下所示:

代码语言:javascript
复制
//make tabs invisible (so you wont see them changing)
private void HideAllTabsOnTabControl(TabControl theTabControl)
{
    theTabControl.Appearance = TabAppearance.FlatButtons;
    theTabControl.ItemSize = new Size(0, 1);
    theTabControl.SizeMode = TabSizeMode.Fixed;
}

//hide all tabs
private void hide_all_tabs() {
    Tab_content.TabPages.Remove(tabPage1);
    Tab_content.TabPages.Remove(tabPage2);
    Tab_content.TabPages.Remove(tabPage3);
    Tab_content.TabPages.Remove(tabPage4);
}
private void materiałyQCToolStripMenuItem_Click(object sender, EventArgs e)
{
    hide_all_tabs(); //hide everything
    Tab_content.TabPages.Add(tabPage1); //schow just first tab
}
private void analizatoryQCToolStripMenuItem_Click(object sender, EventArgs e)
{
    hide_all_tabs();
    Tab_content.TabPages.Add(tabPage2);
}
private void QCzDzisiajToolStripMenuItem_Click(object sender, EventArgs e)
{
    hide_all_tabs();
    Tab_content.TabPages.Add(tabPage3);
}
private void standlabToolStripMenuItem_Click(object sender, EventArgs e)
{
    hide_all_tabs();
    Tab_content.TabPages.Add(tabPage4);
}
票数 0
EN

Stack Overflow用户

发布于 2022-04-03 16:08:19

例如,如果您希望在ContextMenu和主窗体MenuStrip之间共享项

没有项目的MenuStrip

ContextMenu项目

带有从ContextMenu复制的项目的ContextMenu

在主要形式上,您可以:

代码语言:javascript
复制
ToolStripMenuItem toolStripMoved;
ToolStripItem[] itemsArrayMoved;

private void Edit_DropDownOpening(object sender, EventArgs e)
{
    var doc = DockPanel.GetDocuments().FirstOrDefault(t => t.Visible) as DockDocument;
    if (doc != null)
    {
        toolStripMoved = doc.ContextMenuStrip.Items["Edit"] as ToolStripMenuItem;
        if (toolStripMoved != null)
        {
            var menu = (sender as ToolStripMenuItem);
            itemsArrayMoved = Helper.GetAllChildren(toolStripMoved);
            foreach (ToolStripItem item in itemsArrayMoved)
            {
                if (item.Name.Equals("Edit") == false)
                    menu.DropDownItems.Add(item);
            }
        }
    }
}

private void Edit_DropDownClosed(object sender, EventArgs e)
{
    if (toolStripMoved != null)
    {
        foreach (ToolStripItem item in itemsArrayMoved)
        {
            if (item.Name.Equals("Edit") == false)
                toolStripMoved.DropDownItems.Add(item);
        }
    }
}

static private ToolStripItem[] GetAllChildren(ToolStripItem item)
{
    List<ToolStripItem> Items = new List<ToolStripItem>() { item };
    if (item is ToolStripMenuItem)
        foreach (ToolStripItem i in ((ToolStripMenuItem)item).DropDownItems)
            Items.AddRange(GetAllChildren(i));
    else if (item is ToolStripSplitButton)
        foreach (ToolStripItem i in ((ToolStripSplitButton)item).DropDownItems)
            Items.AddRange(GetAllChildren(i));
    else if (item is ToolStripDropDownButton)
        foreach (ToolStripItem i in ((ToolStripDropDownButton)item).DropDownItems)
            Items.AddRange(GetAllChildren(i));
    return Items.ToArray();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20575390

复制
相关文章

相似问题

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