回答編集履歴

1

ついき

2015/06/24 01:05

投稿

Tak1wa
Tak1wa

スコア4791

test CHANGED
@@ -1,10 +1,6 @@
1
1
  WindowAとWindowBが同一アプリケーション内であると前提した場合で回答します。
2
2
 
3
3
  WindowのOwnerプロパティで親を指定させます。
4
-
5
-
6
-
7
- 今回の例であればTopMost=trueなWindowAをWindowBのOwnerに指定すれば、WindowBはモーダレスで起動してもWindowAの前面に出ます。
8
4
 
9
5
 
10
6
 
@@ -14,33 +10,53 @@
14
10
 
15
11
 
16
12
 
13
+ AとBを呼び出す画面(仮にMainWindowとします。)があるのであれば、
14
+
15
+ AはTopMost=true、BはTopMost=falseでOwnerにCを設定すれば良いと思います。
16
+
17
+
18
+
17
19
  ```lang-C#
18
20
 
19
- public partial class WindowA : Window
21
+ public partial class MainWindow : Window
20
22
 
21
23
  {
22
24
 
23
- public WindowA()
25
+ public MainWindow()
24
26
 
25
27
  {
26
28
 
27
29
  InitializeComponent();
28
30
 
31
+ }
32
+
33
+
34
+
35
+ private void btnA_Click(object sender, RoutedEventArgs e)
36
+
37
+ {
38
+
39
+ var A = new WindowA();
40
+
29
- this.Topmost = true;
41
+ A.Topmost = true;
42
+
43
+ A.Show();
30
44
 
31
45
  }
32
46
 
33
47
 
34
48
 
35
- private void Button_Click(object sender, RoutedEventArgs e)
49
+ private void btnB_Click(object sender, RoutedEventArgs e)
36
50
 
37
51
  {
38
52
 
39
- var hoge = new WindowB();
53
+ var B = new WindowB();
40
54
 
41
- hoge.Owner = this;
55
+ B.Topmost = false;
42
56
 
57
+ B.Owner = this;
58
+
43
- hoge.Show();
59
+ B.Show();
44
60
 
45
61
  }
46
62
 
@@ -57,3 +73,13 @@
57
73
  WindowAとWindowBが別アプリケーションの場合は、やれるかわかりませんが
58
74
 
59
75
  出来たとしても、もう少し低い層でフックする必要がありそうです。
76
+
77
+
78
+
79
+ ---
80
+
81
+ #追記
82
+
83
+ よく見たら、Aを常にあとから表示されるTopmostなBの前面に表示したいということなので、
84
+
85
+ ご質問の意図と異なる回答をしていましたのでソースと一部内容を修正しました。