2009-09-26 21 views
0

是否可以將字符串列表附加到字符串屬性,以便用戶可以從屬性窗口中選擇一個字符串?我應該實施ICollection還是這樣的?如何使用下拉列表選項創建公共字符串屬性?

+0

還有一個問題:有沒有什麼辦法讓我將參數傳遞給TypeConverter構造函數時使用它作爲屬性?我希望能夠使用此屬性能夠創建一個字符串下拉列表屬性使用列表由用戶提供的任何類..所以它不工作,只是設置一個默認的字符串列表中的TypeConverter類。 – alexD 2009-09-28 23:27:38

+0

你應該在這裏標記一些答案,然後提出一個新問題,因爲這是一個新的話題。 – 2009-09-28 23:41:52

回答

4

如果您試圖將屬性限制爲幾個特定選項之一,則應該使用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

4

不可以。您應該創建一個帶有字符串選項的enum類型,並創建該類型的屬性。示例:

public enum Choices 
{ 
    NiceChoice, 
    PoorChoice 
} 

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

我無法使用枚舉,因爲列表是動態生成的。基本上,當用戶爲DataGridView設置數據源時,該屬性將讀取列名稱並使用這些名稱填充列表。用戶將能夠選擇他們想要過濾的列。 – alexD 2009-09-28 17:39:34

相關問題