1

Forms特定のポップアップ機能 (MSN に似た、画面の右下にある小さなウィンドウ) を必要とする量が不確定なアプリケーションを作成しています。最初のフォームを書いた後、ファイルをコピーして新しいファイルを作成できると考えました。ここまでは順調ですね。しばらくして、フォームをサブクラス化し、ポップアップ コードを記述し、新しいクラスをサブクラスPopupForm化して他のフォームを作成し、ポップアップ コードを簡単に書き直すことができることに気付きました。それで私はそれをしましたが、今私のフォームはデザイナに正しく表示されません! それらは完全に白く (背景画像やコントロールはありません)、新しいコントロールをドラッグすることはできません。を置いてみました

[Designer("System.Windows.Forms.Design.FormDocumentDesigner, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(IRootDesigner))]
[DesignerCategory("Form")]

新しいフォームのクラスから属性を削除しましたFormが、役に立ちませんでした。フォームの内容を変更できるようにする必要がありますが、何が問題なのかわかりません。そのため、これは煩わしく、混乱を招きます。

4

1 に答える 1

2

複数のコンストラクターがある場合は、基本のパラメーターなしコンストラクターを呼び出すコンストラクター、つまりを含むコンストラクターを呼び出すようにしてくださいInitializeComponent

  class BaseForm
  {
       public BaseForm()
       {
            InitializeComponent();
       }

       // not good -> does not call InitializeComponent() or :this()
       public BaseForm(int someParameter)
       { }

       public BaseForm(string someParameter)
           : this() // good -> calls InitializeComponent()
       { }

       public BaseForm(byte b)
       {
           // good -> InitializeComponent is called explicitly 
           // (but call to this() above is preferred)
           InitializeComponent();
       }
  }

  class DerivedForm : BaseForm
  {
       public DerivedForm()
          : base(5) // not good -> calls the "bad" base constructor
       { }

       // good -> base() constructor is implicitly called
       public DerivedForm(double x)
       { }

       public DerivedForm(string someParam)
          : base(someParam)  // good -> BaseForm(string) will call InitializeComponent
       { }
  }
于 2009-03-16T17:55:57.910 に答える