簡體   English   中英

使用WindowsForm在C#中使用SubMenu?

[英]SubMenu in C# using WindowsForm?

我有一個包含菜單和工具的菜單條

在“菜單”中,我有子菜單,如msO1,msO2,msO3 .......,在“工具”中,我有子菜單,如msP1,msP2,msP3 .......,

在窗體上加載所有可見的子菜單為false ...,在按鈕上單擊用戶想要選擇他想要的子菜單...,

在textBox(txtSelect)中,如果用戶輸入1,3 ...,他得到msO1,msO3 .....,

我的代碼是一個硬代碼...,如果我有20個子菜單,則意味着此代碼無濟於事,任何人都有一個主意...,

   private void btnSelect_Click_1(object sender, EventArgs e)
    {
        msO1.Visible = false;//msO1 is a submenu
        msO2.Visible = false;
        msO3.Visible = false;
        msP1.Visible = false;
        msP2.Visible = false;
        msP3.Visible = false;
        string word = txtSelect.Text;
        string[] splt = word.Split(',');
        int[] arrayItms = new int[splt.Length];
        for (int x = 0; x < splt.Length; x++)
        {
            arrayItms[x]=Convert.ToInt32(splt[x].ToString());
            if (splt.Length > 0)
            {
                switch (arrayItms[x])
                {
                    case 1:
                        msO1.Visible = true; break;
                    case 2:
                        msO2.Visible = true; break;
                    case 3:
                        msO3.Visible = true; break;
                    case 4:
                        msP1.Visible = true; break;
                    case 5:
                        msP2.Visible = true; break;
                    case 6:
                        msP3.Visible = true; break;
                }
            }
        }

    }

創建一個MenuStrip數組

MenuStrip[] mstrip = new MenuStrip[] 
{
    msO1,msO2, msO3, msP1, msP2, msP3 // add other menus here when needed
};

現在您可以將陣列作為一個整體來顯示或不顯示菜單

   for(int x = 0; x < menus.Length; x++)
      mstrip[x].Visible = false;

並且您的代碼可以簡化為

    for (int x = 0; x < splt.Length; x++)
    {
        int menuIndex;
        if(Int32.TryParse(splt[x], out menuIndex))
        {
            menuIndex--;
            if(menuIndex >= 0 && menuIndex < mstrip.Length)
                mstrip[menuIndex].Visible = true;
       }
    }

請記住,數組索引從零開始(而您的用戶可能會開始從1開始計數)。

循環瀏覽菜單條項目中的每個ToolStripMenuItem控件,並將它們設置為可見。 您可以在循環內添加其他條件,以根據用戶的選擇來定義應顯示哪些菜單項。

        foreach (ToolStripMenuItem mi in menuStrip1.Items)
        {
            mi.Visible = true;
        }

你可以用這樣的東西

    string word = txtSelect.Text;
    string[] splt = word.Split(',');
    for (int x = 0; x < splt.Length; x++)
    {
       Control myControl1 = FindControl("ms" + splt[x]);
       if ( myControl1 != null )
         (ToolStripMenuItem)myControl1.Visible = true;
    }

未經測試,但是我希望這能使您完成一半。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM