- ベストアンサー
C#継承について
初心者です。クラスでテキストボックスを継承し、コンストラクタで値を設定していますが、 下記のコードをフォームに配置しても、テキストがabcにならないのですが、一回実行するとなります。なぜでしょうか。 できれば配置時にはすでにabcになってほしいのですが、お願いします。 public class Class1 : TextBox { public Class1() { this.Text = "abc"; } }
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
.NET Frameworkでは、デザイン時にコントロールの動作をカスタマイズするには専用のカスタムデザイナーを用意してあげないといけません。 以下のコードで試してみてください。Class1Desinerというクラスがカスタムデザイナーになります。 尚、「System.Design」名前空間の参照設定が必要になります。 そもそもデザイナーとはどういうものか等は下記マニュアルをご参照ください。 http://msdn.microsoft.com/ja-jp/library/h51z5c0x [System.ComponentModel.Designer(typeof(Class1Desiner))] class Class1 : TextBox { public Class1() { } } class Class1Desiner :System.Windows.Forms.Design.ControlDesigner{ public override void InitializeNewComponent(System.Collections.IDictionary defaultValues) { base.InitializeNewComponent(defaultValues); this.Control.Text = "abc"; } }
お礼
ありがとうございます。助かりました。