1

プロジェクトで特定のフォームを開いて編集するときにリマインダを表示したいと思います。これは、Visual Studioのデザインモード中に発生します。Winformでデザインモードに入るときにダイアログを表示

私はMessageBox.Showをコンストラクタ、ペイントとロードイベントに入れてみましたが、何も動作していないようです。それも可能ですか?

public Form1() 
{ 
    InitializeComponent(); 

    if (this.DesignMode) 
    { 
     MessageBox.Show("Remember to fix the xyz control!"); 
    } 

    if (LicenseManager.UsageMode == LicenseUsageMode.Designtime) 
    { 
     MessageBox.Show("Remember to fix the xyz control!"); 
    } 
} 
+0

ダイアログボックスについてはわかりませんが、TODOを使用することもできます。[タスクリストの使用](https://msdn.microsoft.com/en-us/library/txtwdysk.aspx) –

+1

コンストラクタのコードデザイン時にフォームの実行されません。デザイナーは、フォームの基本クラスのインスタンスを作成し、フォームのコンストラクターには表示されません。したがって、設計時にコードを実行する必要がある場合は、フォームの基本クラスのコンストラクタにコードを記述します。デザイナーのしくみと興味深い例を見るには、[C#でフォームをコーディングするときデザイナーを見ることができない](http://stackoverflow.com/a/32299687/3110834)と[ WinFormsアプリケーションでデザインビューにコントロールをプログラムで追加しましたか?](http://stackoverflow.com/a/33535154/3110834) –

+1

これは問題なく動作します。しかし、Form1は、設計しているフォームの*基本クラス*でなければなりません。デフォルトの基本クラスは 'Form'ですが、それは不平を言っていません。そして、とりわけ、それは編集される必要はありません、それは既に行われました。 –

答えて

1

あなたは次のようにそれを行うことができます。

は、基本フォームの作成:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     this.Load += new EventHandler(Form1_Load); 
    } 

    private void Form1_Load(object sender, System.EventArgs e) 
    { 
     if (this.DesignMode && LicenseManager.UsageMode == LicenseUsageMode.Designtime) 
     { 
      MessageBox.Show("Hello"); 
     } 
    } 

}

をそして、あなたが表示したいと思い病棟の2つ目のフォームでメッセージボックスには、次のように継承する必要があります。

public partial class Form2 : Form1 
{ 
    public Form2() 
    { 
     InitializeComponent(); 
    } 
} 

、デザイン時にフォームを開くと、メッセージボックスが表示されます。

これは私のために働いた、これはあなたを助けてくれることを願っています。 :)

関連する問題