- ベストアンサー
VB2010のユーザコントロールでプロパティの初期値を設定できない問題について
- Windows7、VB2010 Expressで開発している際に、ユーザコントロールでテキストボックスの初期値を設定しようとしても反映されない問題が発生しています。
- プロパティの設定方法に関わらず、Boolean型の場合は「False」、Integer型の場合は「0」になってしまいます。
- 改行しても変化がなく、適切な初期値を設定する方法はあるのでしょうか。ご教示いただければ幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>デフォルト値というのは「作ったコントロールをフォームのデザイナで貼り付けて、何もプロパティを変更してない場合に入っている値」 >という解釈であっていますでしょうか 一般的にはそいういうことだと思いますが、DefaultValueAttribute クラスで指定されるのは別の意味のようです。 Private mChk_Num As Boolean = True <DefaultValue(False)> _ Public Property Chk_Num() As Boolean Get Return mChk_Num End Get Set(ByVal value As Boolean) mChk_Num = value End Set End Property とした場合、フォームにコントロールを貼り付けたときの値( 初期値 ) は True です。 デザイン画面でプロパティを見たとき、プロパティの値≠規定値(False) の場合、プロパティの値がボールドになります。 プロパティの値を False ( 規定値と一致 ) にすると通常のフォントになります。
その他の回答 (1)
- Yune-Kichi
- ベストアンサー率74% (465/626)
DefaultValue属性は,デザイナにデフォルト値を教えるものであって, 初期値を与える代替になる物ではありません。 MSDN: defaultValueAttribute クラス (System.ComponentModel) http://msdn.microsoft.com/ja-jp/library/system.componentmodel.defaultvalueattribute(v=VS.100).aspx にも,その旨が書かれています。 コンストラクタで, blnChk_Num = True blnChk_ZenHankaku = 1 と書いて,初期化をしてください。
お礼
すいません 理解できました 変数宣言の初期値設定もしくはコンストラクタによる初期値設定で、最初に入る値が入るのですね 勘違いをしていました; ありがとうございました!
補足
解答ありがとうございます コンストラクタで設定したところ、思い通りに値が入りました! すいません 私の説明不足+日本語不足なのですが・・・ デフォルト値というのは「作ったコントロールをフォームのデザイナで貼り付けて、何もプロパティを変更してない場合に入っている値」 という解釈であっていますでしょうか ここを見た感じだとそのように感じます http://www.sophia-it.com/content/%E6%97%A2%E5%AE%9A%E5%80%A4 私のやりたいことがまさにそれです 共通処理でテキストボックスを作り、それを各画面で貼り付け、変更もせずに最初に入っている値を設定したいのですができないです なので初期値ではなく、「デフォルト値に値が入らない」ですね・・・ 重ね重ね申し訳ありません
お礼
解答ありがとうございます 理解しました! プロパティの、最初の値から変えるとフォントが太くなりますが<DefaultValue>はその規定値の設定だったのですね <DefaultValue(1)> で、private XX = 1 とすると値は「1」で普通のフォント、 <DefaultValue(1)> で、Private XX = 2 とすると値は「2」で太字 になるんですね ありがとうございました