none
WPFでウィンドウを閉じるときについての質問です。 RRS feed

  • 質問

  • いつもお世話になります。
    VisualStudio2010ExpressEditionで、Windows7、.NET Framework4で、WPFアプリケーションを開発しています。
    WPFでウィンドウを閉じるときについての質問です。

    メインのWpfApplication1から子ウィンドウWindow1を開いています。
    とてもシンプルにすると、

    namespace WpfApplication1 {
     public partial class MainWindow : Window {
      WpfApplication1.Window1 subwindow;
      public MainWindow() {
       InitializeComponent();
       subwindow= new WpfApplication1.Window1();
       subwindow.Show();
      }

      private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
       subwindow.Close();
      }

      private void Close_Click(object sender, RoutedEventArgs e) {
       Close();//ここ
      }
     }
    }

    namespace WpfApplication1 {
     public partial class Window1 : Window {
      public Window1() {
       InitializeComponent();
      }
     }
    }

    というような感じです。
    これだけのソースならば、メインウィンドウを閉じたときに、子ウィンドウも閉じるのですが、じっさいに運用しているほうだと、「//ここ」を実行したあとに、

    利用可能なソースがありません
    呼び出し履歴のフレームにシンボルは読み込まれません。ソースコードを表示できません。

    呼出履歴の場所
    WindowsBase.dll!MS.Win32.UnsafeNativeMethods.GetMessageW(ref System.Windows.Interop.MSG msg, System.Runtime.InteropServices.HandleRef hWnd, int uMsgFilterMax) + 0x14バイト

    というエラーになって先に進みません。
    これに対応する方法はないでしょうか?
    アドバイスお願いします。

    2014年6月9日 22:56

回答

  • ウインドウを閉じるというより、アプリケーションを終了するというのが目的のように見えます。であれば、
    Application.Current.Shutdown() を使用して下さい。
    この場合、子ウインドウに対しては何もしなくても、メインウインドウに引きずられて子ウインドウも自動的に閉じます。

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク skyrabbit 2014年6月10日 6:06
    2014年6月10日 0:20
    モデレータ

すべての返信

  • ウインドウを閉じるというより、アプリケーションを終了するというのが目的のように見えます。であれば、
    Application.Current.Shutdown() を使用して下さい。
    この場合、子ウインドウに対しては何もしなくても、メインウインドウに引きずられて子ウインドウも自動的に閉じます。

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク skyrabbit 2014年6月10日 6:06
    2014年6月10日 0:20
    モデレータ
  • trapemiyaさん、ありがとうございます。
    それで対応できました。
    感謝します。
    2014年6月10日 6:07