Winform开发框架之对话框样式同化

摘要:
2) 在基于传统经典模式的Winform框架的基础上,DotNetBar优秀界面组件的引入极大地改进了界面的样式和布局。在介绍了这三种框架的布局和一般样式之后,让我们来谈谈要点,并介绍Winform开发中经常使用的对话框操作的封装。常见的对话框操作包括各种方法。传统方法如下。

早在《Winform分页控件重大更新,并实现普通版、DotNetBar、DevExpress三大版本整合更新(附各种例子源码)》随笔中,就集成了三种界面样式的分页控件(普通版、基于DotNetBar样式和基于DevExpress样式三种),后来也就形成了我三种不同的Winform开发框架界面样式。

1)基于传统经典模式的界面,采用了OutLookBar工具条以及鼎鼎有名的Weifengluo多文档布局控件,集成了分页控件、使用基于Apose.Cell控件的自定义报表等功能,能适应大多数业务系统的引用。框架数据编辑界面、普通查询窗体界面均采用窗体集成模式,简化开发代码,提高窗体开发效率以及统一界面的一致性。 

Winform开发框架之对话框样式同化第1张

 

2)在基于传统经典模式的Winform框架基础上,引入DotNetBar优秀的界面组件,对界面的样式,布局均由很大程度的提升。工具栏统一集中放置在Ribbon工具条上,可以折叠分组等,另外也支持多文档的界面操作,非常方便和美观。 

Winform开发框架之对话框样式同化第2张 

3)基于DevExpress界面设计也在基于传统经典模式的Winform框架基础上,引入DotNet最为优秀的界面组件DevExpress,对界面布局、样式等模块提升到一个极高的高度,同时提供该样式的分页控件,使得整合更加完美。 Winform开发框架之对话框样式同化第3张 

介绍三种框架的布局及大致样式后,言归正传,介绍在Winform开发中,经常用到的对话框操作的封装,一般的对话框操作,包括有各种不同的方式,传统方式如下所示。

Winform开发框架之对话框样式同化第4张 

以上图片是Win7的效果,XP或者2000下基本上是灰头土脸的效果,如果但在不同的界面样式中,就不能一直用MessageBox.Show这个方法了,因为不同的界面样式提供了不同的对话框封装操作。下面分别介绍基于传统方式、基于DotNetBar界面控件方式、基于DevExpress界面样式方式,三种方式的对话框处理封装类。 

1)、传统方式的对话框处理封装类代码如下

    public class MessageUtil
    {
        /// <summary>
        
/// 显示一般的提示信息
        
/// </summary>
        
/// <param name="message">提示信息</param>
        public static DialogResult ShowTips(string message)
        {
            return MessageBox.Show(message, "提示信息",MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        /// <summary>
        
/// 显示警告信息
        
/// </summary>
        
/// <param name="message">警告信息</param>
        public static DialogResult ShowWarning(string message)
        {
            return MessageBox.Show(message, "警告信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        /// <summary>
        
/// 显示错误信息
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowError(string message)
        {
            return MessageBox.Show(message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示错误标志
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowYesNoAndError(string message)
        {
            return MessageBox.Show(message, "错误信息", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示提示标志
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowYesNoAndTips(string message)
        {
            return MessageBox.Show(message, "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示警告标志
        
/// </summary>
        
/// <param name="message">警告信息</param>
        public static DialogResult ShowYesNoAndWarning(string message)
        {
            return MessageBox.Show(message, "警告信息", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示提示标志
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowYesNoCancelAndTips(string message)
        {
            return MessageBox.Show(message, "提示信息", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);
        }

        /// <summary>
        
/// 显示一个YesNo选择对话框
        
/// </summary>
        
/// <param name="prompt">对话框的选择内容提示信息</param>
        
/// <returns>如果选择Yes则返回true,否则返回false</returns>
        public static bool ConfirmYesNo(string prompt)
        {
            return MessageBox.Show(prompt, "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes;
        }

        /// <summary>
        
/// 显示一个YesNoCancel选择对话框
        
/// </summary>
        
/// <param name="prompt">对话框的选择内容提示信息</param>
        
/// <returns>返回选择结果的的DialogResult值</returns>
        public static DialogResult ConfirmYesNoCancel(string prompt)
        {
            return MessageBox.Show(prompt, "确认", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
        }
    } 

2 )DotNetBar样式中对话框处理封装类如下所示

    public class MessageExUtil
    {
        /// <summary>
        
/// 显示一般的提示信息
        
/// </summary>
        
/// <param name="message">提示信息</param>
        public static DialogResult ShowTips(string message)
        {
            return MessageBoxEx.Show(message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        /// <summary>
        
/// 显示警告信息
        
/// </summary>
        
/// <param name="message">警告信息</param>
        public static DialogResult ShowWarning(string message)
        {
            return MessageBoxEx.Show(message, "警告信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        /// <summary>
        
/// 显示错误信息
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowError(string message)
        {
            return MessageBoxEx.Show(message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示错误标志
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowYesNoAndError(string message)
        {
            return MessageBoxEx.Show(message, "错误信息", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示提示标志
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowYesNoAndTips(string message)
        {
            return MessageBoxEx.Show(message, "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示警告标志
        
/// </summary>
        
/// <param name="message">警告信息</param>
        public static DialogResult ShowYesNoAndWarning(string message)
        {
            return MessageBoxEx.Show(message, "警告信息", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示提示标志
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowYesNoCancelAndTips(string message)
        {
            return MessageBoxEx.Show(message, "提示信息", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);
        }
   } 

3)DevExpress样式中对话框处理封装类如下所示

    public class MessageDxUtil
    {
        /// <summary>
        
/// 显示一般的提示信息
        
/// </summary>
        
/// <param name="message">提示信息</param>
        public static DialogResult ShowTips(string message)
        {
            return DevExpress.XtraEditors.XtraMessageBox.Show(message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        /// <summary>
        
/// 显示警告信息
        
/// </summary>
        
/// <param name="message">警告信息</param>
        public static DialogResult ShowWarning(string message)
        {
            return DevExpress.XtraEditors.XtraMessageBox.Show(message, "警告信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        /// <summary>
        
/// 显示错误信息
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowError(string message)
        {
            return DevExpress.XtraEditors.XtraMessageBox.Show(message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示错误标志
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowYesNoAndError(string message)
        {
            return DevExpress.XtraEditors.XtraMessageBox.Show(message, "错误信息", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示提示标志
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowYesNoAndTips(string message)
        {
            return DevExpress.XtraEditors.XtraMessageBox.Show(message, "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示警告标志
        
/// </summary>
        
/// <param name="message">警告信息</param>
        public static DialogResult ShowYesNoAndWarning(string message)
        {
            return DevExpress.XtraEditors.XtraMessageBox.Show(message, "警告信息", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
        }

        /// <summary>
        
/// 显示询问用户信息,并显示提示标志
        
/// </summary>
        
/// <param name="message">错误信息</param>
        public static DialogResult ShowYesNoCancelAndTips(string message)
        {
            return DevExpress.XtraEditors.XtraMessageBox.Show(message, "提示信息", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);
        }
    } 


三个不同的对话框封装类,专门为不同的Winform界面样式服务,接口一样,返回的对话框结果一样,简化了对这些常用的操作封装的同时,也使得界面的整体性达到更一致,用户体验更好,否则在漂亮的DevExpress界面效果中,突然弹出一个灰头土脸的对话框提示信息,甚是大煞风景,给使用者不好的印象。

以上是我在我的三种界面样式的Winform开发框架中常用到的类,希望对大家有所帮助,并能在具体的项目中应用,有时间就推荐一下,在此感谢大家支持。 

免责声明:文章转载自《Winform开发框架之对话框样式同化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Delphi -- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜 单PIP安装软件报错:“ERROR: Could not install packages due to an EnvironmentError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443)”下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# winform 获取标题栏,状态栏,菜单栏的高度

MessageBox.Show("当前窗体标题栏高度"+(this.Height - this.ClientRectangle.Height).ToString());//获得当前窗体标题栏高度 ClientRectangle//获取表示控件的工作区的矩形 MessageBox.Show(SystemInformation.PrimaryMo...

Winform遍历窗口的所有控件(几种方式实现)

本文链接:https://blog.csdn.net/u014453443/article/details/85088733 扣扣技术交流群:460189483 C#遍历窗体所有控件或某类型所有控件 //遍历窗体所有控件, foreach (Control control in this.Controls) { //遍历后的操作... cont...

winform窗体 【打开多个窗体、窗体之间传值、打开唯一窗体】

1、打开多个窗体 2、窗体之间的传值 3打开唯一窗体 Form1中btn1按钮点击show出Form2,当Form2处于开启状态时,再次点击btn1不会继续弹出窗体,而是将焦点定位至已开启的Form2上;当Form2关闭后,再次点击btn1则会show出一个新的Form2; Form1: //创建一个全局集合,用来放置已经show出的窗体对象 L...

转载:winform的DataGridView中用C#实现按钮列置灰

DataGridView 控件包括 DataGridViewButtonCell 类,该类用于显示具有类似按钮的用户界面 (UI) 的单元格。但 DataGridViewButtonCell 不提供禁用由单元格显示的按钮外观的方式。下面的代码示例演示如何自定义 DataGridViewButtonCell 类来显示可以显示为禁用的按钮。本示例定义一个新的单...

(转载)winform关闭窗口的两个问题

今天把系统的登陆验证功能做上去,现在整套系统俨然一体,有那种集大成后万物归一的舒畅。 讲两个遇到的问题。    第一个问题:通过登陆窗口(Login.cs)正确验证后将进入主窗体(Main.cs),这个时候如何处理这个登陆窗口?    (1)将其隐藏起来,this.Hide();然后进入主窗体,在关闭主窗体时调用Application.Exit();连同这...

winform中 跨线程启动UI

C#的winform程序中,是不可以从UI窗口主线程之外的线程去直接操作窗口控件的。确切的解释是,不能从创建控件的线程以外的线程去处理控件的操作,比如修改属性等。以下是跨线程操作控件的报错信息:线程间操作无效: 从不是创建控件“textBox4”的线程访问它解决办法解决方案有两个:方法一,设定Control类的CheckForIllegalCrossThr...