10

默认情况下,ComboBox 和 Button 元素不属于 WinForms 设计器提供的添加到 StatusStrip 的元素(而 DropDownButton 和 SplitButton 是)。有没有办法在那里添加它们?据我所知,任何控件都可以嵌入其中,但是如何?

4

3 回答 3

21

更容易的是,您可以剪切通过 ToolStrip 中的菜单创建的 ToolStripComboBox 并将其粘贴到 StatusStrip 中。没有编写任何代码行......它可以工作;-)

于 2011-03-29T16:59:35.180 回答
14

您可以轻松地实现继承自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

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
 {
 }
于 2011-02-12T16:17:08.737 回答
1

如果您想向您的 中添加一个简单的按钮,您StatusStrip可以使用设计器来完成。

首先,添加一个DropDownButton. 然后,在DropDownButton属性窗口中,将ShowDropDownArrow属性设置为False

对要在StatusStrip.

于 2016-07-20T18:16:47.350 回答