2017-05-19 14 views
0

私は別のWPFウィンドウを開始するボタンを持つ単純なWPFウィンドウを呼び出す3番目のアプリケーションを持っています。WPFウィンドウがメインのアプリケーションウィンドウの後ろに隠れます。それを前面に持ってきようとしています

MainApp -> Window1 -> Window2

コードが設定ウィンドウ1である方法がすべてうまく機能して良いされているウィンドウ2を起動した後に閉じる必要がありますが、ウィンドウ2は、MainAppにウィンドウの「後ろ」になり、ひいては表示されません。

Window.TopMost:それは私が

私が試してみました物事を解決しようとしているものですこれは結構ですが、問題は、ウィンドウは、すべてのウィンドウI Alt + Tabキーの上にとどまることです。

Activate()\Focus():これらは

を動作しませんでした私もそれをWindow1が全く閉じなかったことを除いて問題を修正するように見えたAlt-Tabキーストロークを送信してみました。

私はさらに別のSOの投稿からActivate()\Focus()\TopMostの組み合わせを試しましたが、何も動作していないようです。

コード:

`void btn_click() // Window1 
{ 
    Myclass.ShowMyDialog(); 
    res = DialogResult... 
    Close(); 
} 

// Myclass 
public static void ShowMyDialog() 
{ 
    s_window2 = new Window2(); 
    s.window2.Closed += OnClosed; 
    s_window2.Show() 
}` 
+0

try window.BringIntoView(); –

+0

同様に試してみた...うまくいきませんでした。 – ababeel

+0

'ShowDialog()'メソッドによって呼び出されるウィンドウの1つですか? – Adwaenyth

答えて

0

Ownerプロパティは、トリックを行う必要があります。次のコードを試してください:

public MainWindow() 
    { 
     InitializeComponent();    
     this.Loaded += MainWindow_Loaded;       
    } 

    private void MainWindow_Loaded(object sender, RoutedEventArgs e) 
    { 
     Window1 win1 = new Window1(); //In your case, object of window2    
     win1.Owner = Application.Current.MainWindow; 
     win1.Show(); 
    } 
+0

私はそれを試みたが今はWindow2すべて表示されませんでした... – ababeel

+0

一度ウィンドウ1が閉じられると、あなたはウィンドウ2を表示していますか? –

+0

Window2で.Show()を呼び出す場所にコードを表示できますか? –

0

[OK]これは問題を解決した方法です。問題は、メインアプリケーション(サードパーティ)を起動してからWindow 1がロードされたとき、Modalであり、サードパーティの読み込み(ドキュメント)が中止されたという問題でした。私はウィンドウ1からウィンドウ2を開いて、ウィンドウ1を閉じていました。ウィンドウ1は同じスレッドであるため、メインアプリケーションにコントロールを返しました(フロントに来てロードを継続していました)。 解決策として、私は別のスレッドでWindow 2を起動します。これは問題を解決するようです。

関連する問題