C# 如何在VisualStudio2010中创建新组件

C# 如何在VisualStudio2010中创建新组件,c#,visual-studio-2010,user-controls,C#,Visual Studio 2010,User Controls,您能告诉我如何在visual Studio 2010中为.net 4.0创建新的visual组件吗, 我有一本关于用俄语Pavel Agurov-Razrabotka Komponetov MS Visual Studio 2005/2008创建组件的书,但本书中的方法涵盖了VS 2005和2008。方法给出了VS2010中的一些错误 编辑: 这是我的密码 public partial class exComboBox : ComboBox { /*public exComboBox()

您能告诉我如何在visual Studio 2010中为.net 4.0创建新的visual组件吗, 我有一本关于用俄语Pavel Agurov-Razrabotka Komponetov MS Visual Studio 2005/2008创建组件的书,但本书中的方法涵盖了VS 2005和2008。方法给出了VS2010中的一些错误

编辑: 这是我的密码

public partial class exComboBox : ComboBox
{
    /*public exComboBox()
    {
        InitializeComponent();
    }*/
    private System.Collections.Specialized.StringCollection _itemValues = new System.Collections.Specialized.StringCollection();

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    [Editor("System.Windows.Forms.Design.StringCollectionEditor,System.Editor","System.Drawing.Design.UITypeEditor,System.Drawing")]
    public System.Collections.Specialized.StringCollection ItemValues
    {
        get
        {
            return _itemValues;
        }
        set
        {
            _itemValues = value;
        }
    }
    public object SelectedItemValue
    {
        get
        {
            return _itemValues[SelectedIndex];
        }
    }
}
当我尝试将这个组件添加到新表单并为ItemValues添加值时,它会说
找不到类型为“System.String”的构造函数。

创建Windows应用程序,然后右键单击解决方案资源管理器中的Project进入“添加新项”菜单,您可以在那里看到组件AFAIR。

右键单击您的项目,选择添加新项。转到C部分并选择用户控件

这将创建一个windows控件,当您使用窗体设计器时,该控件将显示在工具箱的顶部。只需像其他控件一样将其拖放到窗体中

如果您希望从组合框派生它,那么只需编辑所创建的类,并将其基类从UserControl更改为组合框。您可能还需要更改构造函数top call three基类构造函数,而不是为自己执行InitialiseComponent


如果您想在许多应用程序中使用此控件,则可以将代码放入类库项目中,这将生成一个.dll程序集,其他项目可以引用该程序集来访问该控件。

假设您讨论的是Winforms

从现有控件派生可能不是您想要做的事情。特别是如果您希望更改其默认行为或替换其现有属性。你迟早会面临严重的限制。相信我,我去过那里

如果您想要一种简单的方法来为组合框重复某种模式,我建议您看看IExtenderProvider接口。可以在可以在设计图面上拖动的组件派生类上实现它。在这个组件中,您可以声明将作为额外属性附加到任何组合框或任何其他内容的属性,这一切都取决于您

由于组件将知道附加到它的任何内容,因此它将能够在任何附加的控件/组件上声明事件处理程序。例如,如果您希望组合框中已有项,可以处理它的加载事件并将项添加到其中


要了解有关IExtenderProvider的更多信息,请转到。

Visual Studio 2010没有太大变化。请详细告诉我们错误是什么,我们应该能够提供帮助。您是否尝试用谷歌搜索它并查看msdn?是的,但我没有找到满意的结果,之后我决定询问StackOverflow,尽管它的名称不同,StringCollectionEditor实际上无法编辑StringCollection。你需要一个集合类型,它的元素不是不可变的。我做了同样的事情,但它给出了同样的错误,然后怎么办?