如何使用下拉列表选项创建公共字符串属性?

问题描述:

是否可以将字符串列表附加到字符串属性,以便用户可以从属性窗口中选择一个字符串?我应该实施ICollection还是这样的?如何使用下拉列表选项创建公共字符串属性?

+0

还有一个问题:有没有什么办法让我将参数传递给TypeConverter构造函数时使用它作为属性?我希望能够使用此属性能够创建一个字符串下拉列表属性使用列表由用户提供的任何类..所以它不工作,只是设置一个默认的字符串列表中的TypeConverter类。 – alexD 2009-09-28 23:27:38

+0

你应该在这里标记一些答案,然后提出一个新问题,因为这是一个新的话题。 – 2009-09-28 23:41:52

如果您试图将属性限制为几个特定选项之一,则应该使用Enum而不是字符串作为属性。

如果你想提供默认值,但让他们键入任何字符串并忽略默认值,那么你可以使用StringConverter。详情请阅读Getting the Most Out of the .NET Property Grid control。它涵盖了这个确切的场景。

+0

我检查了这个链接,但它似乎告诉你如何为PropertyGrid对象执行此操作 - 我无法在设计时属性窗口中使用它。我发现的一切似乎都是针对PropertyGrid控件的 - 在设计时有没有办法做到这一点? – alexD 2009-09-28 17:38:33

+0

这是一回事。设计时的属性窗口是一个PropertyGrid控件 - 如果你做它描述的内容,它将在设计时以这种方式显示。 – 2009-09-28 17:40:37

+0

谢谢你这个工作......我不小心在我的属性中有错误的类型(有StringConverter,但我的类名是ColumnStringConverter,所以它不工作)。 – alexD 2009-09-28 22:45:41

不可以。您应该创建一个带有字符串选项的enum类型,并创建该类型的属性。示例:

public enum Choices 
{ 
    NiceChoice, 
    PoorChoice 
} 

public class Chooser 
{ 
    public Choices Choice { get; set; } 
} 
+0

我无法使用枚举,因为列表是动态生成的。基本上,当用户为DataGridView设置数据源时,该属性将读取列名称并使用这些名称填充列表。用户将能够选择他们想要过滤的列。 – alexD 2009-09-28 17:39:34