Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windows窗体中泛型的使用_C#_.net_Winforms_Generics_Coding Style - Fatal编程技术网

C# windows窗体中泛型的使用

C# windows窗体中泛型的使用,c#,.net,winforms,generics,coding-style,C#,.net,Winforms,Generics,Coding Style,我希望使用Items属性创建自定义控件 返回实现IList的类itemcollection安全吗,因为我在任何预构建控件中都没有看到这一点 实现这一点的最佳方式是什么 是的,你几乎可以用任何东西。一个表单就是一个类 您没有看到示例主要是因为WinForms是一种.NET1.0技术。自那时以来,几乎没有添加或更改 除非您需要特定的功能,否则请保持简单: public IList<ItemType> ItemsCollection { get ... set ... } publ

我希望使用Items属性创建自定义控件

返回实现
IList
的类
itemcollection
安全吗,因为我在任何预构建控件中都没有看到这一点


实现这一点的最佳方式是什么

是的,你几乎可以用任何东西。一个表单就是一个类

您没有看到示例主要是因为WinForms是一种.NET1.0技术。自那时以来,几乎没有添加或更改

除非您需要特定的功能,否则请保持简单:

public IList<ItemType> ItemsCollection  { get ...   set ... }
public IList ItemsCollection{get…set…}

为控件创建从ILIst继承的类型的属性没有问题。但是,如果要构建控件,最好在设计时使用PropertyGrid使属性可编辑。要使其可编辑,您应该创建自己的从CollectionBase继承的项集合,并创建该类型的属性

查看本文:

之后,请不要忘记通过设置适当的属性,在设计时使Items属性可编辑:

[可浏览(true),DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
公共YourItems集合项目
{
获取{…}
集合{…}
}

+1-通常情况下,您不需要集合属性上的setter。对,或者将其设置为私有。我给它留了一点示意图,不想把事情理解成这个问题。