WPF对话框整理

WPF 专栏收录该内容
9 篇文章 0 订阅

目录

一 前置

二 打开/保存文件对话框

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 = "颜色已选择";
            }
        }

结语

这次的分享就到这里了

完整项目工程放在这里:源码下载

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值