2016-05-15 8 views
-1

私は登録フォームであるForm1と共にアプリケーションを持ち、Form2は実際のアプリケーションです。アプリケーションが登録されているときに、Form2だけでなくForm1が開かれる必要があります。 私はこのコードをvb.netからc#に変換し、それはwindowformsアプリケーションでうまくいきますが、私はWPFアプリケーションに問題があります。私はWPF初心者です。誰でも助けてくれますか?WPFの既定のウィンドウインスタンス

public Form1() 
    { 
     InitializeComponent(); 
     //Added to support default instance behavour in C# 
     if (defaultInstance == null) 
      defaultInstance = this; 
    } 
#region Default Instance 
private static Form1 defaultInstance; 
public static Form1 Default 
    { 
     get 
     { 
      if (defaultInstance == null) 
      { 
       defaultInstance = new Form1(); 
       **defaultInstance.FormClosed += new FormClosedEventHandler(defaultInstance_FormClosed);** 
      } 

      return defaultInstance; 
     } 
    } 

    static void defaultInstance_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     defaultInstance = null; 
    } 
#endregion //Default Instance 
+0

問題は何ですか? – weston

+0

問題はWPFでFormClosedEventHandlerですが、このコードはWinFormsで正常に動作します。 –

+1

問題の原因となっている行は理解していますが、問題の原因がわかりません*。何が起きているのかを説明してください。それはコンパイルされませんか?それは実行時に例外を与えますか?それとも単にあなたが期待していることをやっていないのですか? – weston

答えて

0

ありがとうございました。私は解決策を見つけました。誰かがそれを必要とする場合:

ライン:

static void defaultInstance_WindowClosed(object sender, EventArgs e) 
:と交換

static void defaultInstance_FormClosed(object sender, FormClosedEventArgs e) 

defaultInstance.Closed += new EventHandler(defaultInstance_WindowClosed); 

とライン:

defaultInstance.FormClosed += new FormClosedEventHandler(defaultInstance_FormClosed); 

と交換

もちろん、Form1は実際のWPFウィンドウに置き換えてください。

私の場合、Form1 =検証。

関連する問題