TURBO-569:Common增加提示框HexMessageBox
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows;
|
||||
using System.Windows.Interop;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
|
||||
namespace XP.Common.GeneralForm.Views;
|
||||
|
||||
/// <summary>
|
||||
/// 自定义消息框,可替代标准 MessageBox
|
||||
/// </summary>
|
||||
public partial class HexMessageBox : Window
|
||||
{
|
||||
public MessageBoxResult Result { get; set; }
|
||||
|
||||
public string MessageText
|
||||
{
|
||||
get => (string)GetValue(MessageTextProperty);
|
||||
set => SetValue(MessageTextProperty, value);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MessageTextProperty =
|
||||
DependencyProperty.Register("MessageText", typeof(string), typeof(HexMessageBox), new PropertyMetadata(""));
|
||||
|
||||
public new ImageSource Icon
|
||||
{
|
||||
get => (ImageSource)GetValue(IconProperty);
|
||||
set => SetValue(IconProperty, value);
|
||||
}
|
||||
|
||||
public new static readonly DependencyProperty IconProperty =
|
||||
DependencyProperty.Register("Icon", typeof(ImageSource), typeof(HexMessageBox), new PropertyMetadata(null));
|
||||
|
||||
public MessageBoxButton MessageBoxButton
|
||||
{
|
||||
get => (MessageBoxButton)GetValue(MessageBoxButtonProperty);
|
||||
set => SetValue(MessageBoxButtonProperty, value);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MessageBoxButtonProperty =
|
||||
DependencyProperty.Register("MessageBoxButton", typeof(MessageBoxButton), typeof(HexMessageBox), new PropertyMetadata(MessageBoxButton.OK));
|
||||
|
||||
public HexMessageBox(string messageText, MessageBoxButton messageBoxButton, MessageBoxImage image)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
Left = (SystemParameters.PrimaryScreenWidth - Width) / 2;
|
||||
Top = (SystemParameters.PrimaryScreenHeight - Height) / 2;
|
||||
|
||||
MessageText = messageText;
|
||||
IntPtr iconHandle = SystemIcons.Information.Handle;
|
||||
|
||||
switch (image)
|
||||
{
|
||||
case MessageBoxImage.Error:
|
||||
iconHandle = SystemIcons.Error.Handle;
|
||||
break;
|
||||
case MessageBoxImage.Question:
|
||||
iconHandle = SystemIcons.Question.Handle;
|
||||
break;
|
||||
case MessageBoxImage.Warning:
|
||||
iconHandle = SystemIcons.Warning.Handle;
|
||||
break;
|
||||
case MessageBoxImage.Information:
|
||||
iconHandle = SystemIcons.Information.Handle;
|
||||
break;
|
||||
}
|
||||
|
||||
Icon = Imaging.CreateBitmapSourceFromHIcon(iconHandle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
|
||||
Icon.Freeze();
|
||||
|
||||
MessageBoxButton = messageBoxButton;
|
||||
Result = MessageBoxResult.None;
|
||||
Topmost = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示模态对话框并返回结果
|
||||
/// </summary>
|
||||
public static MessageBoxResult Show(string messageText, MessageBoxButton messageBoxButton, MessageBoxImage image)
|
||||
{
|
||||
return Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
var window = new HexMessageBox(messageText, messageBoxButton, image);
|
||||
window.ShowDialog();
|
||||
return window.Result;
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示非模态消息
|
||||
/// </summary>
|
||||
public static HexMessageBox ShowMessage(string messageText, MessageBoxImage image)
|
||||
{
|
||||
HexMessageBox? messageBox = null;
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
messageBox = new HexMessageBox(messageText, MessageBoxButton.OK, image);
|
||||
messageBox.Show();
|
||||
});
|
||||
return messageBox!;
|
||||
}
|
||||
|
||||
private void Yes_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.Yes; Close(); }
|
||||
private void No_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.No; Close(); }
|
||||
private void OK_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.OK; Close(); }
|
||||
private void Cancel_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.Cancel; Close(); }
|
||||
}
|
||||
Reference in New Issue
Block a user