一个ToolStripComboBox被放在一个ToolStripButton之后,后面跟着另一个右对齐的one。如何最好地将ToolStripComboBox设置为始终调整其长度,以填充前面和后面的ToolStripButtons之间的所有可用空间?
在过去,我经常处理父元素调整大小事件,根据相邻元素的坐标计算要设置的新长度,并设置新的大小。但现在,当我在开发一个新的应用程序时,我想知道是否没有更好的方法。
发布于 2010-05-05 05:37:34
这里没有自动布局的选项。但您可以通过实现ToolStrip.Resize事件轻松地完成此操作。这样做效果很好:
private void toolStrip1_Resize(object sender, EventArgs e) {
toolStripComboBox1.Width = toolStripComboBox2.Bounds.Left - toolStripButton1.Bounds.Right - 4;
}
protected override void OnLoad(EventArgs e) {
toolStrip1_Resize(this, e);
}确保将TSCB的AutoResize属性设置为False,否则它将无法工作。
发布于 2010-06-18 00:19:13
我成功地使用了以下几点:
private void toolStrip1_Layout(System.Object sender, System.Windows.Forms.LayoutEventArgs e)
{
int width = toolStrip1.DisplayRectangle.Width;
foreach (ToolStripItem tsi in toolStrip1.Items) {
if (!(tsi == toolStripComboBox1)) {
width -= tsi.Width;
width -= tsi.Margin.Horizontal;
}
}
toolStripComboBox1.Width = Math.Max(0, width - toolStripComboBox1.Margin.Horizontal);
}上面的代码没有受到消失控制问题的影响。
发布于 2015-08-14 04:25:33
ToolStrip ts = new ToolStrip();
ToolStripComboBox comboBox = new TooLStripComboBox();
comboBox.Dock = DockStyle.Fill;
ts.LayoutStyle = ToolStripLayoutStyle.Table;
((TableLayoutSettings)ts.LayoutSettings).ColumnCount = 1;
((TableLayoutSettings)ts.LayoutSettings).RowCount = 1;
((TableLayoutSettings)ts.LayoutSettings).SetColumnSpan(comboBox,1);
ts.Items.Add(comboBox);现在组合框将正确停靠填充。相应地设置列或行跨度。
https://stackoverflow.com/questions/2769087
复制相似问题