2012-02-02 52 views
0

請考慮下面的代碼我:一個PropertyGrid的問題

我得到一個錯誤Constructor on type 'System.String' not found.當我添加新的字符串使用PropertyGrid控制集合。

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     propertyGrid1.SelectedObject = Class1.Instance.StringCollection; 
    } 
} 

----------------------------------------------------------------------------- 

public sealed class Class1 
{ 
    private static Class1 _instance = new Class1(); 
    private List<string> _stringListCollection = new List<string>(); 

    public Class1() 
    { 
    } 

    public static Class1 Instance 
    { 
     get { return _instance; } 
    } 

    public List<string> StringCollection 
    { 
     get { return _stringListCollection; } 
     set { _stringListCollection = value; } 
    } 
} 
+0

您的代碼不正確。您可能已將'Class1.Instance'分配給屬性網格。通過分配'Class1.Instance',然後在'StringCollection'前面按下'''',然後按下Add按鈕,你會得到你提到的錯誤。 – 2012-02-02 09:02:05

+0

提供的代碼沒有編譯出於以下兩個原因:實例沒有指定類型,因爲沒有聲明名爲Instance的類。我假設它應該被鍵入Class1。其次名爲Form1的事件處理程序是非法的,因爲一個方法不能具有與它的封閉類型相同的名稱。我將其更改爲Form1_Load,並根據事件處理程序中的代碼將其分配給Load事件。 – Crippledsmurf 2012-02-02 09:07:47

+0

對不起,請大家諒解。這不是我的實際代碼,它更可能只是一個僞代碼.. :) – yonan2236 2012-02-02 09:14:53

回答

1

當您指定的東西PropertyGrid的列表,它會嘗試顯示單行修改...按鈕, 其中默認修改對話框要求項目類有默認的構造函數,這是不正確的字符串

的情況下,

您可以創建一個有默認的構造函數和字符串屬性類,並分配類,而不是字符串的集合

或者您可以使用EditorAttribute覆蓋默認編輯

希望這會有所幫助

+0

嗯......我會盡力回覆你。感謝這個想法。 – yonan2236 2012-02-02 08:57:47

+0

我剛剛意識到...我希望這個類是靜態的...所以使一個實例不可能正確嗎?..所以不會創建一個counstructor ...我應該如何實現它? – yonan2236 2012-02-02 08:59:09

+0

你可以用你自定義的@ yonan2236覆蓋編輯器,看編輯的文章 – 2012-02-02 09:01:12