6

ToolStripComboBoxは、ToolStripButtonの後に配置され、右揃えの別のボタンが続きます。前のToolStripButtonと次のToolStripButtonの間で使用可能なすべてのスペースを埋めるように、常に長さを調整するようにToolStripComboBoxを設定するにはどうすればよいですか?

以前は、親のサイズ変更イベントを処理し、隣接する要素の座標に基づいて設定する新しい長さを計算し、新しいサイズを設定していました。しかし今、私は新しいアプリケーションを開発しているので、これ以上の方法はないのではないかと思います。

4

3 に答える 3

6

私は大成功を収めて以下を使用します:

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);
}

上記のコードは、消える制御の問題に悩まされていません。

于 2010-06-17T16:19:12.610 に答える
2

このための自動レイアウトオプションはありません。ただし、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-05-04T21:37:34.363 に答える
1
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);

これで、コンボボックスが正しくドッキングされます。それに応じて列または行のスパンを設定します。

于 2015-08-13T20:25:33.370 に答える