我需要一个从ComboBox派生的类,它只接受某些特定类型的对象。所以,我需要一个通用的ComboBox。如果我宣布一个像这样的新类:
public class GComboBox <Type> : ComboBox
{
// Some code
}
然后GComboBox
将不会出现在Windows窗体的工具箱中。如何让它出现在工具箱中以便我可以将它放在那里,因为我可以放置任何其他派生的非通用ComboBox?
答案 0 :(得分:0)
使用此GComboBox
的最简单方法是:
ComboBox
代替GComboBox
,然后转到 Form1.Designer.cs 并将GComboBox
替换为ComboBox
。如果您想从工具箱中明确拖动,则必须创建类库(来自visual studio new projet)并将其添加到工具箱中 Adding Custom Controls dll to Visual Studio ToolBox
答案 1 :(得分:0)
您可以使用带有Property的常规子类代替通用Control:
public class GComboBox : ComboBox
{
public Type myType { get; set; }
public GComboBox(Type type) { myType = type; }
public GComboBox() { myType = typeof(int); }
public override string ToString()
{
return "GComboBox<" + myType.ToString() + ">";
}
}
这将按预期显示在工具箱中。它默认为System.Int32
,您应该在放置它之后进行调整,例如在Form构造函数..
InitializeComponent();
gComboBox1.myType = typeof(Bitmap);
不确定如何阻止添加错误类型..没有ItemAdded事件。 This Post建议收听ComboBox消息,但大多数帖子都告诉您无论如何都可以控制添加项目..