-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMessageWindow.xaml.cs
More file actions
86 lines (76 loc) · 4.13 KB
/
MessageWindow.xaml.cs
File metadata and controls
86 lines (76 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using System.Windows;
using Application = System.Windows.Application;
namespace XColumn
{
public partial class MessageWindow : Window
{
// コンストラクタにボタンテキスト用引数を追加
public MessageWindow(string message, string title, MessageBoxButton buttons = MessageBoxButton.OK, MessageBoxImage icon = MessageBoxImage.None,
string? yesText = null, string? noText = null, string? cancelText = null, string? okText = null)
{
InitializeComponent();
this.Title = title;
this.MessageTextBlock.Text = message;
// テキストのカスタマイズ
if (!string.IsNullOrEmpty(yesText)) YesButton.Content = yesText;
if (!string.IsNullOrEmpty(noText)) NoButton.Content = noText;
if (!string.IsNullOrEmpty(cancelText)) CancelButton.Content = cancelText;
if (!string.IsNullOrEmpty(okText)) OkButton.Content = okText;
// ボタンの表示制御
if (buttons == MessageBoxButton.YesNo)
{
YesButton.Visibility = Visibility.Visible;
NoButton.Visibility = Visibility.Visible;
OkButton.Visibility = Visibility.Collapsed;
CancelButton.Visibility = Visibility.Collapsed;
}
else if (buttons == MessageBoxButton.YesNoCancel)
{
// 3ボタン表示
YesButton.Visibility = Visibility.Visible;
NoButton.Visibility = Visibility.Visible;
CancelButton.Visibility = Visibility.Visible;
OkButton.Visibility = Visibility.Collapsed;
}
else if (buttons == MessageBoxButton.OKCancel)
{
OkButton.Visibility = Visibility.Visible;
CancelButton.Visibility = Visibility.Visible;
YesButton.Visibility = Visibility.Collapsed;
NoButton.Visibility = Visibility.Collapsed;
}
else // OKのみ
{
OkButton.Visibility = Visibility.Visible;
YesButton.Visibility = Visibility.Collapsed;
NoButton.Visibility = Visibility.Collapsed;
CancelButton.Visibility = Visibility.Collapsed;
}
// アイコン処理が必要であればここに追加
}
// Showメソッドを拡張
public static MessageBoxResult Show(Window? owner, string message, string title, MessageBoxButton buttons, MessageBoxImage icon,
string? yesText = null, string? noText = null, string? cancelText = null, string? okText = null)
{
var dlg = new MessageWindow(message, title, buttons, icon, yesText, noText, cancelText, okText);
dlg.Owner = owner ?? Application.Current.MainWindow; // ownerがnullならメインウィンドウを親にする
// 閉じる前にダイアログを表示
dlg.ShowDialog();
return dlg.Result;
}
// 既存のオーバーロード(互換性維持のため)
public static MessageBoxResult Show(Window? owner, string message, string title, MessageBoxButton buttons = MessageBoxButton.OK)
{
return Show(owner, message, title, buttons, MessageBoxImage.None);
}
public static MessageBoxResult Show(string message, string title, MessageBoxButton buttons = MessageBoxButton.OK, MessageBoxImage icon = MessageBoxImage.None)
{
return Show(null, message, title, buttons, icon);
}
public MessageBoxResult Result { get; private set; } = MessageBoxResult.Cancel;
private void OkButton_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.OK; Close(); }
private void YesButton_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.Yes; Close(); }
private void NoButton_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.No; Close(); }
private void CancelButton_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.Cancel; Close(); }
}
}