2010-06-02 7 views
7

Mam kontrolę użytkownika z właściwością, która jest typu odniesienia. Projektant formularzy Windows Forms nadal generuje kod, który przypisuje wartość początkową właściwości do wartości null. Jak mogę temu zapobiec?Jak zabezpieczyć projektanta Forms Windows przed generowaniem domyślnych przypisań wartości dla właściwości?

Próbowałem dodawać metody resetowania i powinnyServicesize - Reset miał puste ciało i powinnoSerialize zawsze zwrócił false - ale to nie zadziałało. Zastosowałem również BrowsableAttribute i ustawiłem na false.

Edit:

typ m.in. to klasa w tym samym projekcie. To nie jest komponent ani kontrola, tylko zwykła klasa dziedzicząca z Object. Ponadto, ustawiający właściwość wywołuje metodę wykorzystującą wartość właściwości jako jej argument, a metoda nie akceptuje wartości null jako poprawnego argumentu.

Przykład:

public MyClass Property1 
{ 
    get { return _property1; } 
    set 
    { 
     _property1 = value; 
     SomeMethod(value); // This method throws ArgumentNullException; 
    } 
} 

Uwaga: zrobić sobie sprawę, że wymienione metody get i będzie prawdopodobnie bardziej odpowiednie tutaj.

+0

Dodaj przykład. Tylko dowolny rodzaj ref lub ref do komponentu/kontrolki? –

+0

Nawet jeśli nie ustawisz ręcznie wartości NULL, wartość domyślna nadal będzie mieć wartość NULL dla typu ref. Czego byś się spodziewał? –

+0

Zakładam, że program Windows Forms Designer zastępuje wartość, którą początkowo zapisałeś w formancie kontrolnym? – Mike

Odpowiedz

18

Mętny, mógłbym użyć urywka. Poinformuj projektanta, że ​​nigdy nie powinien serializować wartości nieruchomości:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
    public Image Aardvark { get; set; } 
+0

+1 Kocham sieć. –

+0

@ Czy możemy również dostarczyć wartość domyślną dla właściwości i renderować ją na projektancie? – Brij

Powiązane problemy