![](/img/trans.png)
[英]Insert data into table(from select) using 2 DataGridView c# windowsForm
[英]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.