当 MenuStrip
菜单项过多时,可能会导致菜单无法完全显示在窗体上,这时可以使用以下两种方法来处理:
ToolStripDropDown
控件作为子菜单MenuStrip
组件中的菜单项可以作为父菜单,而 ToolStripDropDown
控件可以作为子菜单。通过将菜单项的 DropDown
属性设置为 ToolStripDropDown
控件的实例,可以将子菜单放入一个弹出式菜单中,从而解决菜单太多的问题。ToolStripDropDown
控件创建子菜单:// 创建一个菜单项
var menuItem = new ToolStripMenuItem("Menu");
// 创建一个 ToolStripDropDown 控件作为子菜单
var subMenu = new ToolStripDropDown();
// 将子菜单添加到菜单项中
menuItem.DropDown = subMenu;
// 添加子菜单项到子菜单中
for (int i = 1; i <= 20; i++)
{
subMenu.Items.Add($"Sub Menu {i}");
}
// 将菜单项添加到 MenuStrip 控件中
menuStrip1.Items.Add(menuItem);
// 添加第一组菜单项
var menuItem1 = new ToolStripMenuItem("Menu 1");
menuStrip1.Items.Add(menuItem1);
menuStrip1.Items.Add(new ToolStripSeparator());
// 添加第二组菜单项
var menuItem2 = new ToolStripMenuItem("Menu 2");
menuStrip1.Items.Add(menuItem2);
menuStrip1.Items.Add(new ToolStripSeparator());
// 添加第三组菜单项
var menuItem3 = new ToolStripMenuItem("Menu 3");
menuStrip1.Items.Add(menuItem3);
menuStrip1.Items.Add(new ToolStripSeparator());
// 添加第四组菜单项
var menuItem4 = new ToolStripMenuItem("Menu 4");
menuStrip1.Items.Add(menuItem4);
以上代码将菜单项分成了四组,并使用分割线将它们隔开。可以根据需要调整分组和分割线的位置和数量,以达到最佳效果。
换行可以?
不知道如何换行,代码如下,大家可以 测试一下
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 100; i++)
{
ToolStripMenuItem tsmi = new ToolStripMenuItem();
tsmi.Text = i+"123";
menuStrip1.Items.Add(tsmi);
}
}
Control好像有一个属性是控制当界面无法展示控件的全部时展现滑动条的。
MenuStrip不知道有没有效果。
好像没有这个功能
@郑英灿: 用的.NET Framework
还是.Net
?
@yuitoTDF: .NET Framework
想错了..Auto Scroll是窗体的
你把所有扫描整理成一个扫描,然后下拉不好吗
以前做了权限设定,和角色 绑在了一起,回不了头了
建议改成动态下拉菜单,一样有权限设定,就是多花那一丢丢时间
不太明白,我们现在就是动态下拉的
要不就作成一个窗体 上面放 N*N个button,专门用来当菜单用
用一个容器装起来
– 何生有二十六画 1年前@何生有二十六画: 用pannel容器后,一级菜单多了,就会两边滚动吗,谢 谢
– 郑英灿 1年前@郑英灿: 目前我没有测试过,你可以试试,我的目的是让你菜单可以分两行
– 何生有二十六画 1年前@何生有二十六画: 用容器没有用,试过了
– 郑英灿 1年前