2015-10-12 29 views
1

我有一個應用程序,它具有ToolStripSeparaters分開設置的相關控件的工具條。它看起來是這樣的:ToolStrip上的組相關控件,以便它們始終可見

Scenario width adequate screen width. Related controls shown together.

然而,當窗口尺寸縮小,一些控制得到轉移到一個小下拉條。不幸的是,這可以拆分相關的控件,例如在下面的截圖中,「按ID過濾」標籤,ID的相關文本框和「清除過濾器」按鈕不再顯示在一起。

Narrower window with related controls split apart

如果控件有被移動到下拉,我更願意有相關的控件一起移動。有沒有辦法在ToolStrip上將相關控件分組在一起?或者更好的方式來處理這種情況?


我嘗試使用LayoutCompleted事件的所有控件移到溢出區域,如果其中任何一個都在溢出。

private void toolStrip1_LayoutCompleted(object sender, EventArgs e) 
{ 
    var filterGroup = new List<ToolStripItem> { lblFilter, txtFilter, btnClearFilter }; 
    if (filterGroup.Any(x => x.IsOnOverflow)) 
    { 
    filterGroup.ForEach(x => x.Overflow = ToolStripItemOverflow.Always); 
    } 
} 

這似乎工作正常,但我還沒有找到一個好方法,當窗口大小增加時再次顯示它們。我試過的ToolStrip與下面的代碼ResizeLayout事件都:

var filterGroup = new List<ToolStripItem> { lblFilter, txtFilter, btnClearFilter }; 
filterGroup.ForEach(x => x.Overflow = ToolStripItemOverflow.AsNeeded); 
+0

您大概已嘗試掛鉤'ToolStrip'的'LayoutCompleted'事件?如果是這樣,請展示,並顯示你在那裏嘗試做什麼,並解釋它爲什麼不能滿足你的需要。 – ClickRick

+0

@ClickRick請參閱編輯。 –

回答

2

你可以使用一個ToolStripControlHost A組winformsTextBoxLabel。例如。其他

public class ToolStripLabelTextBox : ToolStripControlHost { 

    public Label Label { get; private set; } 
    public TextBox TextBox { get; private set; } 

    public ToolStripLabelTextBox(String labelText) : base(new FlowLayoutPanel { FlowDirection = FlowDirection.LeftToRight, WrapContents = false, AutoSize = true, AutoSizeMode = AutoSizeMode.GrowAndShrink, Padding = Padding.Empty, Margin = Padding.Empty }) { 
     Label = new Label { Text = labelText, AutoSize = true, Anchor = AnchorStyles.Top | AnchorStyles.Bottom, TextAlign = System.Drawing.ContentAlignment.MiddleCenter }; 
     TextBox = new TextBox(); 

     FlowLayoutPanel panel = (FlowLayoutPanel) Control; 
     panel.Controls.Add(Label); 
     panel.Controls.Add(TextBox); 
    } 
} 

兩個選項:

  1. 實現一個LayoutEngine,你想要做的分組。
  2. 實施顯示標籤和文本框的複合ToolStripItem。您可以使用ToolStripRadioButtonMenuItem作爲示例:https://msdn.microsoft.com/en-us/library/vstudio/ms404318%28v=vs.100%29.aspx
相關問題