![](/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.