2012-01-28 18 views
0

私はこのウィンドウを持っている:隠しウィンドウ(WPFアプリケーション)を閉じるには?私のアプリケーション(WPF)で

public partial class Window1 : WindowとXAML x:Class="WpfApplication1.Window1"

に今、私は窓1と背面にメインにしてから切り替えたとき、私たちVisibility.HiddenとVisibility.Visibleを非表示にしてユーザーに再度表示させることができます。

私が今しようとしているのは、メインウィンドウにテストボタンを作っているということです。ウィンドウ1を閉じます。 このウィンドウは非表示ですが、実際にはバックグラウンドで閉じたいと思っています。最初はを使用していますが、そのトリックはしていないようです。

これを正しい方法でどのように行う必要がありますか? ありがとうございます。

EDIT 1 - 私のメインウィンドウで、WINDOW1を開くには

質問がより明確になって、私は、ウィンドウ1で、この部分

Window1 W1 = null; // Initialise Field. 
    public void CalcTabel_Click(object sender, RoutedEventArgs e) 
    { 
    if (W1 == null) 
    { 
    W1 = new Window1(); 
    W1.Hoofdmenu = this; 
    W1.checkLang(); 
    W1.Show(); 
    } 
    else 
    { 
    W1.checkLang(); 
    W1.Visibility = Visibility.Visible; 
    } 
    this.Visibility = Visibility.Hidden; 
    } 

を使用し、持って戻るボタンがあり、これでコードの切り抜き(ここでは "Hoofdmenu"メインウィンドウ):

Hoofdmenu.updateStatistics(); 
Hoofdmenu.Visibility = Visibility.Visible; 
this.Visibility = Visibility.Hidden; 

しかし、もう一度、今度はメインウィンドウに立っているので(ウィンドウ1が隠れている)私はそのウィンドウ1を閉じたいと思っていますが、W1.Close()を使っても動作しません。だから私はそのウィンドウ1を閉じる方法を探していますではなく、はその可視性を変更します。

EDIT 2 - ソリューション

小さな変更this.W1.Close();が実際に仕事をしたもののので、W1.Close();ない仕事をした使用して:)

+0

なぜあなたは隠されたウィンドウが閉じていないshureですか?あなたは何をしているのかを明確にするためにサンプルコードをもっと投稿できますか?クローズ時に行われた操作は、クローズシグナルを破棄しますか? – Beachwalker

+0

ウィンドウ1内で、いくつかのボタンがクリックされ、その外観が変わります。ウィンドウが実際に閉じられていないことを確かめることができます。そうしないと、デフォルトにリセットされてしまい、それが起こらなかったからです。上記をもう少し編集してもう少し明確にすることができるかどうかがわかります。 – Dante1986

+0

W1を置くことができますか?Try CatchブロックでClose()を実行し、例外をポストしますか? – Paparazzi

答えて

1

あなたは窓やintializeでのForm2のオブジェクトを作成することができますその可視性を偽にする。

ボタンをクリックするだけで、あなたが

public partial class MainWindow : Window 
    { 
    private Window1 window2; 

    public MainWindow() 
    { 
     InitializeComponent(); 
     this.window2 = new Window1(); 

     this.window2.Show(); 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     this.window2.Visibility = System.Windows.Visibility.Hidden; 
    } 
    } 

はあなたのコードを読んだ後、再び

+0

this.window2.Close();もしあなたがそれを閉じたいと思ってもうまくいきます。 – Mohit

+0

ああ、あなたはそれをok、クールで済ませました。 – Mohit

+0

あなたの投稿を編集し、今後の可読性のためにコメントをここにクリアしてください:) – Dante1986

0

それが見えるように言うsimpliyことができ、あなたがそれを望むように可能ではないthatsの。 window1インスタンスはローカルオブジェクトです。この方法なら、あなたはそれを手放すことができません。 最高ののは、this.close() でwindow1にクローズボタンを設定することです。メインウィンドウでグローバルインスタンスを作成し、nullでないかどうかを確認して閉じます。

関連する問題