首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何制作ToolStripComboBox来填充ToolStrip上的所有可用空间?

如何制作ToolStripComboBox来填充ToolStrip上的所有可用空间?
EN

Stack Overflow用户
提问于 2010-05-05 05:26:40
回答 3查看 7.8K关注 0票数 5

一个ToolStripComboBox被放在一个ToolStripButton之后,后面跟着另一个右对齐的one。如何最好地将ToolStripComboBox设置为始终调整其长度,以填充前面和后面的ToolStripButtons之间的所有可用空间?

在过去,我经常处理父元素调整大小事件,根据相邻元素的坐标计算要设置的新长度,并设置新的大小。但现在,当我在开发一个新的应用程序时,我想知道是否没有更好的方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-05 05:37:34

这里没有自动布局的选项。但您可以通过实现ToolStrip.Resize事件轻松地完成此操作。这样做效果很好:

代码语言:javascript
复制
    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,否则它将无法工作。

票数 2
EN

Stack Overflow用户

发布于 2010-06-18 00:19:13

我成功地使用了以下几点:

代码语言:javascript
复制
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);
}

上面的代码没有受到消失控制问题的影响。

票数 5
EN

Stack Overflow用户

发布于 2015-08-14 04:25:33

代码语言:javascript
复制
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);

现在组合框将正确停靠填充。相应地设置列或行跨度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2769087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档