版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.youkuaiyun.com/lc352778616/article/details/79076724
WPF利用window实现自定义MessageBox,并实现自定义点击事件
效果图
项目结构
//类似工厂模式显示不同风格的MessageBox
class MyMessageBox
{
public static int OK=0;
public static int OKCANCLE = 1;
public MyMessageBox(){}
public static void Show(string mess)
{
MessageBoxOK myMessageBoxOK = new MessageBoxOK(mess);
myMessageBoxOK.Show();
}
/// <summary>
/// 显示对话框
/// </summary>
/// <param name="mess">提示消息</param>
/// <param name="style">对话框样式</param>
public static bool? ShowDialog(string mess, int style)
{
switch (style)
{
case 0:
MessageBoxOK myMessageBoxOK = new MessageBoxOK(mess);
return myMessageBoxOK.ShowDialog();
break;
case 1:
MessageBoxOKCancle myMessageBoxOKCancle = new MessageBoxOKCancle(mess);
return myMessageBoxOKCancle.ShowDialog();
break;
default:
return false;
}
}
}
//两个按钮的MessageBox后台代码
public partial class MessageBoxOKCancle : Window
{
public MessageBoxOKCancle()
{
InitializeComponent();
}
public MessageBoxOKCancle(string mess)
{
InitializeComponent();
message.Text = mess;
}
private void Confirm_Click(object sender, RoutedEventArgs e)
{
//如果window不是以Showdialog方式打开设置DialogResult时会引发异常
try
{
this.DialogResult = true;
}
catch (Exception ex) { }
this.Close();
}
private void Cancle_Click(object sender, RoutedEventArgs e)
{
//如果window不是以Showdialog方式打开设置DialogResult时会引发异常
try
{
this.DialogResult = false;
}
catch (Exception ex) { }
this.Close();
}
}
//MessageBox界面
<Window x:Class="AutoShopManager.Managers.Messagebox.MessageBoxOKCancle"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="提示" Height="300" Width="350" WindowStyle="None" WindowStartupLocation="CenterScreen">
<Grid>
<TextBlock Name="message" HorizontalAlignment="Left" TextAlignment="Center" TextBlock.FontSize="25" Margin="31,69,0,0" TextWrapping="Wrap" Text="支付成功" VerticalAlignment="Top" Height="123" Width="277"/>
<Button Content="确定" HorizontalAlignment="Left" Margin="190,212,0,0" VerticalAlignment="Top" Width="75" Click="Confirm_Click"/>
<Button Content="取消" HorizontalAlignment="Left" Margin="83,212,0,0" VerticalAlignment="Top" Width="75" Click="Cancle_Click"/>
</Grid>
</Window>
//单个按钮的MessageBox后台代码
public MessageBoxOK()
{
InitializeComponent();
}
public MessageBoxOK(string mess)
{
InitializeComponent();
message.Text = mess;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
try {
this.DialogResult = false;
}
catch(Exception ex){ }
this.Close();
}
}
<Window x:Class="AutoShopManager.Managers.Messagebox.MessageBoxOK"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="提示" Height="300" Width="350" WindowStyle="None" WindowStartupLocation="CenterScreen">
<Grid>
<TextBlock Name="message" HorizontalAlignment="Left" TextAlignment="Center" TextBlock.FontSize="25" Margin="31,69,0,0" TextWrapping="Wrap" Text="支付成功" VerticalAlignment="Top" Height="123" Width="277"/>
<Button Content="确定" HorizontalAlignment="Left" Margin="134,220,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
</Grid>
</Window>
使用方式
if(MyMessageBox.ShowDialog("种类名字不得为空", MyMessageBox.OKCANCLE).Value == true)
{
MessageBox.Show("ok");
}
else
{
MessageBox.Show("No");
}
注意:
window如果以showdialog的形式启动所有线程都会停止,直到这个窗口返回,才会执行后面的代码
————————————————
版权声明:本文为优快云博主「Charles灬」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/lc352778616/article/details/79076724