2014-12-24 11 views
3

Во-первых, немного обзор того, как мой текущий пользовательский интерфейс выглядит следующим образом:контроль «Pin» над элементов в ToolstripMenu

Current 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(); 
     } 
    } 
} 
+0

Правильно ли я понял: вы хотите иметь 2 "области" во всплывающем окне: верхняя часть, где прокручиваются 3-4 вещи и одна привязана к основанию? Я не знаю, что такое привязанный элемент управления, но вы пробовали вложенность ToolStripControlHosts? Тот, который у вас внутри другого, который содержит 2 вещи: скроллер и без скроллера? – Plutonix

+0

@Plutonix Да, я закончил делать что-то подобное. – Christian

ответ

3

Мое решение этой проблемы полностью избежать с помощью обычной системы удержания управления меню и вместо того, чтобы иметь меню показать одну FlowLayoutPanel, который содержит мои пункты меню.

Это связано с необходимостью добавления нескольких трюков, чтобы заставить панель хорошо вести себя с пользовательским интерфейсом. Дополнительным преимуществом такого подхода является большая гибкость и контроль над системой.

С другой стороны, я заметил ухудшение производительности, когда у меня есть тонна подпозиций, но я буду исследовать это отдельно.