2009-05-04 17 views
13

Ich habe ein UserControl mit ein paar booleschen Eigenschaften drin. Ich möchte, dass sie standardmäßig auf "true" gesetzt werden, wenn sie nicht explizit auf der ASPX-Seite gesetzt werden, oder sie zumindest zwingen, deklariert zu werden, wenn es keinen Weg gibt, einen Standard festzulegen. Ich weiß, dass es eine Möglichkeit gibt, dies zu tun, weil viele Steuerelemente Eigenschaften benötigt haben, die Ihre App beim Versuch, sie auszuführen, unterbrechen und sie nicht deklariert werden.UserControl Standardwert in Eigenschaft

Wie mache ich das?

Beispiel:

<je:myControl runat="server" id="myControl" showBox="False"> 

Ich möchte das System entweder brechen oder die Standardeinstellung auf „true“ gesetzt, wenn showBox aus dieser Erklärung bleibt.

Danke!

Antwort

20

Definieren Sie Ihre Objekte mit ihren Standardwerten wie folgt aus:

private bool _ShowBox = false; 
public bool ShowBox 
{ 
    set { _ShowBox = value; } 
} 

oder in Ihrer Kontrolle Konstruktor, Standardwerte:

public MyControl() 
{ 
    _ShowBox = false; 
} 

oder Exception werfen, wenn es nicht belegt ist:

private bool _ShowBox = false; 
public bool ShowBox 
{ 
    set { _ShowBox = value; } 
    get { return _ShowBox; } 
} 
+0

danke! das ist perfekt – Jason

+0

'if (_ShowBox == null) {' kann wahr sein, weil du keinen bool auf null setzen kannst. – Peter

+0

Was? Bool mit Null zu überprüfen wird immer falsch zurückgeben !!!! – Yuki

2

einfach den gewünschten Standardwert festgelegt, wenn die Deklaration einer Variablen:

class myControl 
{ 
    private bool _showBox = true; 

    [PersistenceMode(PersistenceMode.Attribute), DefaultValue(false)] 
    public bool showBox 
    { 
     get { return _showBox; } 
     set { _showBox = value; } 
    } 
} 

Optional Sie die Default für Designer hinzufügen können.

24

Ich weiß, ich bin spät, aber ich wollte nur, dass

012 zu erwähnen
[DefaultValue(false)] 

wird das Attribut nicht auf false setzen. Siehe: http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx. Es heißt:

"Ein DefaultValueAttribute wird nicht ein Mitglied automatisch mit dem Wert des Attributs initialisiert werden. Sie müssen den Anfangswert in Ihrem Code festlegen."

Dieses Attribut dient nur dazu, in Visual Studio Designer anzugeben, was Sie als Standardwert ansehen. Wenn jemand, der Ihr Steuerelement verwendet, diesen Wert ändert, wird fett angezeigt, um anzuzeigen, dass dieser Wert nicht standardmäßig ist.

2

ReSharper eine Auto-Eigenschaft empfiehlt die Verwendung und im Konstruktor den Standardwert einstellen, etwa so:

public class MyControl 
{ 
    public MyControl() 
    { 
    ShowBox = true; 
    } 

    public bool ShowBox { get; set; } 
} 
Verwandte Themen