前提・実現したいこと
エラーメッセージ用にmessageboxを共通クラスにしており、
ダイアログから表示させているのですが、
messageboxから戻ってくると
別のダイアログがアクティブ化されてしまいます。
キチンと呼び出したダイアログへアクティブを戻したいのですが
うまくいきません
環境
visualstudio 2017 C# WPF
発生している問題
動作の流れ
1.mainwindow(親ダイアログ)にてwindow1(子ダイアログ)をshow
2.window1にてmessageboxsクラスのMessageShowを呼ぶ
3.MessageShowにてMessageBox.Show(text);している
これで普通にメッセージボックスは表示されますが、
OKで戻ってくると
mainwindowがアクティブになり、
window1が隠れてしまいます。
window1がアクティブのままにしたいです。
該当のソースコード
mainWindow.xaml.cs
c#
1 2namespace WpfApp1 3{ 4 /// <summary> 5 /// MainWindow.xaml の相互作用ロジック 6 /// </summary> 7 public partial class MainWindow : Window 8 { 9 public MainWindow() 10 { 11 InitializeComponent(); 12 } 13 14 private void Button_Click(object sender, RoutedEventArgs e) 15 { 16 Window w = new Window1(); 17 w.Owner = this; 18 w.Title = "新しいWindowをShow"; 19 w.Show(); 20 } 21 } 22} 23
window1.xaml.cs
c#
1 2namespace WpfApp1 3{ 4 /// <summary> 5 /// Window1.xaml の相互作用ロジック 6 /// </summary> 7 public partial class Window1 : Window 8 { 9 public Window1() 10 { 11 InitializeComponent(); 12 } 13 14 private void Button_Click(object sender, RoutedEventArgs e) 15 { 16 string str = "A"; 17 18 MessageBoxs.MessageShow(str); 19// System.Windows.Forms.MessageBox.Show("a"); 20 } 21 22 private void Button_Click_1(object sender, RoutedEventArgs e) 23 { 24 System.Windows.MessageBox.Show("B"); 25 } 26 } 27} 28 29
messageboxs.cs
c#
1 2namespace WpfApp1 3{ 4 class MessageBoxs 5 { 6 public static void MessageShow(string text) 7 { 8 MessageBox.Show(text,"a",MessageBoxButton.OK,MessageBoxImage.Error,MessageBoxResult.OK, 9 MessageBoxOptions.DefaultDesktopOnly); 10 11 } 12 } 13} 14
試したこと
①一度、window1から(直に書いてある)messagebox.showした後だと、大丈夫
②windwo1.Acitve()を最後に加えてもダメだった。
③VisualStudio2019で作ってみると、問題なし(多分)
④VisualStudio2013で作ってみると、同じくおかしい(多分)
④topmostを使って、window1を固定ー>隠れなくなるがActiveはmainWindowになっているのでNG(操作ミスの原因になりかねないため)
補足情報
ソフト開発の都合で
「window1.show()でダイアログ表示する(showdialogではNG)」
「messageboxs.csを使ってメッセージボックスを表示する(window1に埋め込めない)」
「開発環境は2017と指定を受けている」
という制約があります。
解決策がありましたら、
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー