目录
一 前置
二 打开/保存文件对话框
1 打开对话框
2 过滤文件类型
3 初始目录
三 消息框
1 最简单弹窗
2 弹窗的标题
3 多个按钮的弹窗
4 系统图标
5 指定按钮
四 创建自定义对话框
1 创建xaml文件
2 设置自定义内容
3 设置DialogResult
4 打开对话框
五 其他对话框
1 打印对话框
2 字体对话框
3 颜色对话框
结语
一 前置
首先引用 System.Windows.Forms.dll
默认存放位置:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\System.Windows.Forms.dll
在窗口视图中,设置我们需要的按钮以及对应的响应事件,lb_DialogResult作为消息提示。
<Grid Margin="0,0,29.333,8.667">
<TextBlock x:Name="lb_DialogResult" Background="Beige" Margin="199,0,32,328"/>
<ContentControl Height="60" Margin="0,0,0,0" Grid.Row="1" >
<ContentControl.Content>
<Grid >
<Button Content="打开文件对话框" Margin="194,0,340,20" Background="Beige" Padding="5" Click="OpenFileDialogOnClick"/>
<Button Content="打开保存对话框" Margin="444,0,97,20" Background="Beige" Padding="5" Click="SaveFileAsOnClick"/>
<Button Content="MessageBoxBtn" Margin="10,-160,620,180" Background="Beige" FontSize="10" BorderBrush="CadetBlue" Click="MessageBoxBtnOnClick" />
<Button Content="打开字体对话框" Margin="10,61,622,-43" Background="Beige" FontSize="10" BorderBrush="CadetBlue" Click="FontDialogButtonOnClick"/>
<Button Content="打开颜色选择对话框" Margin="10,0,622.333,20" Background="Beige" FontSize="10" BorderBrush="CadetBlue" Click="ColorDialogButtonOnClick"/>
<Button Content="打开打印对话框" Margin="10,-91,622.333,107" Background="Beige" FontSize="10" BorderBrush="CadetBlue" Click="PrintDialogButtonOnClick"/>
<Button Content="打开Window对话框" Margin="10,129,620,-118" Background="Beige" Padding="5" Click="OpenWindowDialogOnClick"/>
</Grid>
</ContentControl.Content>
</ContentControl>
</Grid>
二 打开/保存文件对话框
1 打开对话框
我们使用 Microsoft.Win32命名空间下的打开和保存文件的标准对话框
/// <summary>
/// 打开文件选择对话框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OpenFileDialogOnClick(object sender, RoutedEventArgs e)
{
Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
if (openFileDialog.ShowDialog() == true)
{
lb_DialogResult.Text = openFileDialog.FileName;
}
}
/// <summary>
/// 保存文件对话框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SaveFileAsOnClick(object sender, RoutedEventArgs e)
{
Microsoft.Win32.SaveFileDialog saveFileDialog = new Microsoft.Win32.SaveFileDialog();
if (saveFileDialog.ShowDialog() == true)
{
lb_DialogResult.Text = saveFileDialog.FileName;
}
}
ShowDialog()将返回一个可以为空的布尔值,这意味着它可以是false,true或null。当返回值为true时则表示选择了有效的文件。
2 过滤文件类型
如图所示,当打开文件时,会打开所有类型的文件,如果我只想打开指定的文件类型,那只需设置Filter设置。调整后就会过滤到不需要的文件类型。
openFileDialog.Filter = "ini files (*.ini)|*.ini|All files (*.*)|*.*";
3 初始目录
如果想设置打开文件的初始文库目录
openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Environment.SpecialFolder.MyDocuments 打开我的文档,也有其他类型可自行参考。
三 消息框
1 最简单弹窗
接受一个参数的时,该参数就是要显示的信息,默认不带有弹窗的标题
MessageBox.Show("弹窗展示内容!", "弹窗标题");
2 弹窗的标题
当参数为二个时,第二个可选参数就是该弹窗的标题
MessageBox.Show("弹窗展示内容!", "弹窗标题");
3 多个按钮的弹窗
MessageBox.Show("弹窗展示内容!", "弹窗标题", MessageBoxButton.YesNoCancel);
MessageBoxButton中不同的枚举表示不同的按钮显示
//
// Summary:
// Specifies the buttons that are displayed on a message box. Used as an argument
// of the Overload:System.Windows.MessageBox.Show method.
public enum MessageBoxButton
{
//
// Summary:
// The message box displays an OK button.
OK = 0,
//
// Summary:
// The message box displays OK and Cancel buttons.
OKCancel = 1,
//
// Summary:
// The message box displays Yes, No, and Cancel buttons.
YesNoCancel = 3,
//
// Summary:
// The message box displays Yes and No buttons.
YesNo = 4
}
4 系统图标
带有图标的MessageBox,WPF为我们提供了一系列的图标供我们使用
MessageBox.Show("错误警告!!!!", "警告", MessageBoxButton.OK, MessageBoxImage.Error);
同样的MessageBoxImage不同枚举值都有不同的含义和图标。
//
// Summary:
// Specifies the icon that is displayed by a message box.
public enum MessageBoxImage
{
//
// Summary:
// No icon is displayed.
None = 0,
//
// Summary:
// The message box contains a symbol consisting of a white X in a circle with a
// red background.
Hand = 16,
//
// Summary:
// The message box contains a symbol consisting of white X in a circle with a red
// background.
Stop = 16,
//
// Summary:
// The message box contains a symbol consisting of white X in a circle with a red
// background.
Error = 16,
//
// Summary:
// The message box contains a symbol consisting of a question mark in a circle.
Question = 32,
//
// Summary:
// The message box contains a symbol consisting of an exclamation point in a triangle
// with a yellow background.
Exclamation = 48,
//
// Summary:
// The message box contains a symbol consisting of an exclamation point in a triangle
// with a yellow background.
Warning = 48,
//
// Summary:
// The message box contains a symbol consisting of a lowercase letter i in a circle.
Asterisk = 64,
//
// Summary:
// The message box contains a symbol consisting of a lowercase letter i in a circle.
Information = 64
}
5 指定按钮
可以设置其中一个按钮做完默认选项 ,会看到该按钮会有虚线标记,作为默认选项,当按下回车或者空格时会触发选项。。
MessageBoxResult result = MessageBox.Show("啥情况!!!!", "疑问", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
switch (result)
{
case MessageBoxResult.Yes:
MessageBox.Show("选择Yes");
break;
case MessageBoxResult.No:
MessageBox.Show("选择NO");
break;
case MessageBoxResult.Cancel:
MessageBox.Show("选择Cancel");
break;
}
四 创建自定义对话框
1 创建xaml文件
新建一个xaml文件,用于创建自定义内容。
2 设置自定义内容
我们给这个对话框设置确定和取消两个按钮,方便测试自定义窗口的返回值
3 设置DialogResult
通过DialogResult获取自定义对话框的返回值
private void OKButtonOnClick(object sender, RoutedEventArgs e)
{
DialogResult = true;
}
private void CancelButtonOnClick(object sender, RoutedEventArgs e)
{
DialogResult = false;
}
4 打开对话框
在MainWindow.xaml中打开自定义窗口,并获取返回值。至此自定义窗口就创建完了。
/// <summary>
/// 打开window窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OpenWindowDialogOnClick(object sender, RoutedEventArgs e)
{
WindowDlg windowDlg = new WindowDlg();
windowDlg.ShowDialog();
lb_DialogResult.Text = windowDlg.DialogResult.ToString();//获取自定义对话框的返回值
}
五 其他对话框
同样lb_DialogResult作为信息展示,当选中目标时ShowDialog()为true
1 打印对话框
private void PrintDialogButtonOnClick(object sender, RoutedEventArgs e)
{
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
lb_DialogResult.Text = "打印已选择";
}
}
2 字体对话框
private void FontDialogButtonOnClick(object sender, RoutedEventArgs e)
{
WindowsForms.FontDialog fontDialog = new WindowsForms.FontDialog();
if (fontDialog.ShowDialog() == WindowsForms.DialogResult.OK)
{
lb_DialogResult.Text = "字体已选择";
}
}
3 颜色对话框
private void ColorDialogButtonOnClick(object sender, RoutedEventArgs e)
{
WindowsForms.ColorDialog colorDialog = new WindowsForms.ColorDialog();
if (colorDialog.ShowDialog() == WindowsForms.DialogResult.OK)
{
lb_DialogResult.Text = "颜色已选择";
}
}
结语
这次的分享就到这里了