• ベストアンサー

C#継承について

初心者です。クラスでテキストボックスを継承し、コンストラクタで値を設定していますが、 下記のコードをフォームに配置しても、テキストがabcにならないのですが、一回実行するとなります。なぜでしょうか。 できれば配置時にはすでにabcになってほしいのですが、お願いします。 public class Class1 : TextBox {   public Class1()   {     this.Text = "abc";   } }

質問者が選んだベストアンサー

  • ベストアンサー
  • hogya
  • ベストアンサー率67% (49/73)
回答No.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";   } }

noname#189001
質問者

お礼

ありがとうございます。助かりました。

関連するQ&A