Могу ли я встроить ComboBox и простую кнопку в StatusStrip в WinForms? - PullRequest
9 голосов
/ 12 февраля 2011

По умолчанию элементы ComboBox и Button не входят в число тех, которые предлагаются для добавления в StatusStrip дизайнером WinForms (в отличие от DropDownButton и SplitButton).Есть ли способ добавить их туда?Насколько я слышал, там можно встроить любой элемент управления, но как?

Ответы [ 3 ]

20 голосов
/ 29 марта 2011

Проще, вы можете вырезать ToolStripComboBox, созданный через меню в ToolStrip, и вставить его в StatusStrip. Нет строк кода написано ... и это работает; -)

12 голосов
/ 12 февраля 2011

Вы можете легко реализовать наследование от ToolStripControlHost:

[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.MenuStrip |
                                       ToolStripItemDesignerAvailability.ContextMenuStrip | 
                                       ToolStripItemDesignerAvailability.StatusStrip)]
    public class ComboStripItem : ToolStripControlHost
    {
        private ComboBox combo;

        public ComboStripItem()
            : base(new ComboBox())
        {
            this.combo = this.Control as ComboBox;
        }

        // Add properties, events etc. you want to expose...
    }

После перестройки своего решения вы сможете увидеть элемент даже в конструкторе:

ComboStripItem in forms designer

PS
Этот пункт можно будет использовать также в ContextMenuStrip и MenuStrip.

РЕДАКТИРОВАТЬ:

Чтобы установить пользовательский значок, используйте ToolboxBitmapAttribute.

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

 [ToolboxBitmapAttribute("image path or use another overload..."),
  ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.MenuStrip |
                                   ToolStripItemDesignerAvailability.ContextMenuStrip |
                                   ToolStripItemDesignerAvailability.StatusStrip)]
 public class ComboBoxItem : ToolStripComboBox
 {
 }
1 голос
/ 20 июля 2016

Если вы хотите добавить простую кнопку к вашему StatusStrip, вы можете сделать это с помощью Designer.

Сначала добавьте DropDownButton.Затем в окне свойств DropDownButton установите для свойства ShowDropDownArrow значение False.

Повторяйте для каждой дополнительной простой кнопки, которую вы хотите отобразить в StatusStrip.

...