首先,简要介绍一下我当前的UI是什么样子的:

注意,除了ToolStripControlHost中的内容之外,其他的东西都是标准的WinForms。
简而言之,我想要一些类似于ToolStripControlHost的东西,但我需要将它“固定”在菜单的底部,主要是因为当有很多项时,它不会像其他菜单项那样滚动。
经过一番周旋之后,我得出了这样的结论:也许定制绘画可能是解决问题的方法,但我不知道是否是这样。
下面是一些示例代码,但我不确定它有多有用:
public ToolStripDropDownButtonContainer(ToolStripDropDownButton button)
{
this.UIControl = button.GetCurrentParent();
this.Button = button;
if (this.Button.Tag == null)
{
this.Button.Tag = true;
this.Button.DropDownDirection = ToolStripDropDownDirection.AboveLeft;
ToolStripDropDownMenu menu = (ToolStripDropDownMenu)this.Button.DropDown;
menu.SuspendLayout();
try
{
menu.BackColor = Color.White;
menu.ShowImageMargin = false;
menu.ShowCheckMargin = false;
menu.AutoSize = true;
menu.Margin = Padding.Empty;
menu.Padding = Padding.Empty;
menu.GripMargin = Padding.Empty;
menu.GripStyle = ToolStripGripStyle.Hidden;
menu.MinimumSize = new Size(310, 0);
menu.MaximumSize = menu.MinimumSize;
// TODO pin panel (or some control) to the bottom-side of the menu
}
finally
{
menu.ResumeLayout();
}
}
}发布于 2015-01-03 16:22:03
我对这个问题的解决方案是完全避免使用普通的菜单控制控制系统,而是让菜单显示一个FlowLayoutPanel,它代替了我的菜单项。
这需要添加一些不同的技巧,以使面板能够很好地与UI一起运行。这种方法的另一个优点是对系统具有更大的灵活性和控制能力。
在不利方面,我注意到当我有一吨子项目时,性能会下降,但我将分别对此进行调查。
https://stackoverflow.com/questions/27634915
复制相似问题