2009-05-04 17 views
13

私は、いくつかのブールプロパティを持つUserControlを持っています。 .aspxページで明示的に設定されていない場合は、デフォルトでtrueに設定するか、デフォルトを設定する方法がない場合は、少なくとも宣言するようにしてください。私はそれを実行しようとすると、宣言されていないあなたのアプリを壊すプロパティが必要な多くのコントロールが必要なので、これを行う方法があることを知っています。UserControlプロパティのデフォルト値

どうすればよいですか?

例:

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

showBoxは、この宣言の外に残っている場合、私は「真」にデフォルトを壊すか、設定のいずれかにシステムをしたいです。

ありがとうございます!変数を宣言するとき

答えて

20

そのような彼らのデフォルト値を使用してプロパティを定義します。デフォルト値を設定し、

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

したり、コントロールのコンストラクタで:

public MyControl() 
{ 
    _ShowBox = false; 
} 

またはそれが割り当てられていない場合に例外をスロー:

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

はあなたに感謝します!これは完璧です – Jason

+0

boolをnullに設定できないため、if(_ShowBox == null){'がtrueになる可能性があります。 – Peter

+0

何ですか?ヌルでboolをチェックすると常にfalseが返されます!!!! – Yuki

2

ただ、希望のデフォルト値を設定します。

class myControl 
{ 
    private bool _showBox = true; 

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

オプションあなたはデザイナーのためのDefaultValueAttributeを追加することができます。

24

私は遅く知っていますが、私はそのことを言いたかっただけです

[DefaultValue(false)] 

は、属性をfalseに設定しません。参照:http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx。それは言う:

"DefaultValueAttributeメンバーの属性の値で自動的に初期化されません。あなたのコードで初期値を設定する必要があります。

この属性は、Visual Studio Designerでデフォルト値とみなすことを示すためのものです。コントロールを使用しているユーザーがこの値を変更した場合は、太字のと表示され、この値がデフォルト値ではないことを知らせます。

2

のReSharperは自動プロパティを使用して、そしてそのように、コンストラクタでデフォルト値を設定することをお勧めします:

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

    public bool ShowBox { get; set; } 
}