合理的布局,绚丽的样式,谈谈winform程序的界面设计(代码片段)

一念如是 一念如是     2022-11-10     318

关键词:

转载,不错的学习文章

阅读后,起初不太明白,试验了几次后明白了dev的强大。从事Winform开发很多年了,由于项目的需要,设计过各种各样的界面效果。一般来说,运用传统的界面控件元素,合理设计布局,能够设计出比较中规中矩的标准界面;利用一些换肤的控件或者部分界面组件,能够设计出相对好看一些的界面效果,如以前很盛行的ActiveSkin、IrisSkin和DotNetSkin等,这些能够对传统的界面元素进行换肤,确实比标准灰色的界面控件好看了很多。不过随着界面控件的组件发展,目前一般倾向于是用较为大型的控件组,他们除了提供设计得体的界面控件外,还提供了非常多种绚丽多彩的界面样式供选择,如DotNetBar、netadvantage、DevExpress等大型界面控件组。

无论界面设计如何变化,一般基本原则都是为客户提供直观、易用、体验效果较好的界面效果哦,从Office的发展历程我们也可以看到整体的界面效果趋向,从开始的标准控件到目前的Ribbon窗体,从单色调变化到绚丽多彩的界面样式,都给我们提供很好的界面设计参考,大型的界面组件也是模仿这一趋势。言归正传,我们来谈谈详细一点的东西,目前我趋向于采用一种基于Ribbon样式的界面,以及一种基于传统界面结合OutLook样式的界面设计。

 一、基于Ribbon样式的界面

 

 以上的界面样式,是一种比较大气、符合Office界面效果的界面布局,通过把不同的功能块集中在不同的面板上显示,确实简洁、美观很多,本文不重复介绍该界面效果的优劣,我们主要来集中看看下面的另外一种界面效果。

二、基于OutLook样式的界面设计

其实OutLook样式很早就有,也可以在很多公开的控件组中看到,如果仅仅是追求部分的OutLook界面效果,而不是整体性的方案,那么CodeProject上的这款开源Outlook组件,估计是其中的佼佼者(http://www.codeproject.com/Articles/43181/A-Serious-Outlook-Style-Navigation-Pane-Control)。不过由于需求的是整体性效果,而且还要考虑更多控件界面样式的一致性及美观性,因此我们还是基于DevExpress界面组来设计这样的OutLook界面效果,会显得更加美观大方一点。界面效果如下所示。

以上通过把一个系统很多相关的功能模块放到一颗树上进行分类展示,对于一个比较复杂的人力资源管理系统或者其他复杂功能的系统,也是一个比较合理的布局方式,另外OutLook工具条还是可以隐藏起来,节省右边多文档界面的数据展示空间,这样整体还是比较合理及美观的。其中右边的布局,还可以通过SplitContainer方式把它分成多个模块,然后客户想哪个数据显示面板大一点,拖动一下就可以了,这样不至于数据比较多的时候,导致显示布局不好的情况。下面我们来介绍下如何实现以上的界面布局效果。

1、创建一个基于DevExpress.XtraEditors.XtraForm基类的窗体。如下代码所示

复制代码
public partial class MainForm : DevExpress.XtraEditors.XtraForm
    
        public MainForm()
        
            InitializeComponent();
        
    
复制代码

2、在界面设计中,在DevExpress工具箱Navigation & Layout里面拖动添加一个BarManager控件到窗体中,并删除默认的工具栏Tools,并添加一些菜单项和状态条数据。如下所示。

3、添加PanelControl和NavBarControl,添加一些测试功能按钮。

由于我们需要使用MDI多文档界面效果,因此先设置Mainform的IsMdiContainer属性为True。

然后添加一个PanelControl,设置其Dock为Top布局,为该控件ContentImage设置一个背景图片(事先用PS设计好,保存为png格式即可),添加几个小Lable,设置其的图片和文字。

最后拖入一个NavBarControl控件到界面中,设置其Dock为Left布局,通过控件的右键菜单上的“Run Designer"进入设计界面,先随便添加一些NavBarGroup和NavBarItem项目,粗略设置得到界面效果如下所示。

注意,在NavBarcontrol里面,默认是没有一个Panel可以添加一些特殊的控件,如树、按钮等,默认只有BarItem对象可以添加进入。为了在一个NavBarGroup里面添加这样的控件,需要修改NavBarGroup的属性才行,如下所示。

 

4、添加DockManager和XtraTabbedMdiManager 控件实现多文档布局,其最终将以Tab方式进行展现。

继续在上面的窗体中添加DockManager控件和XTraTabbedMdiManager控件,这两个控件可以实现在右边以Tab方式展现多文档布局,这样对用户操作来说,可以一次性打开多个窗体进行操作,方便很多,也必将美观,是一种常见的布局展现。为了在窗体激活的时候,在顶部显示关闭按钮,其他的不显示,那么需要设置XTraTabbedMdiManager控件的ClosePageButtonShowMode=InActiveTabPageHeader即可实现了。最终Tab效果如下所示。 

以上就是我设计的一个系统界面的具体操作流程,其实很多时候,介绍总是很快,摸索总是很慢,这个就是知识积累的效率提升。当然,要设计好一个系统界面,除了考虑界面的布局美观性、还要考虑图标的协调性、还有就是整体的框架,要可以比较好的适应这些布局控件的操作,不能太过臃肿或者难以阅读。

结合css3的布局新特征谈谈常见布局方法

...会做的应该是为设计图大致地划分区域,然后选择一种最合理的,结构清晰的布局。下面我先根据一些典型的网站案例列举一下几种常见的页面布局。T型布局这个是我们比较常见的布局,其页面的顶部一般放置横网站的标志或Ba... 查看详情

园友提供的绚丽的桌面程序框架

           一使用CEF的NanUI           《NanUIforWinform发布,让Winform界面设计拥有无限可能》,从此使用html+css开发win 查看详情

winform响应式布局设计实践

引言创建响应式WinForm应用程序并不那么简单。响应式布局,在此我指的是应用程序在不同屏幕分辨率下的可用性。对于WinForm应用程序,我们需要明确地根据分辨率来调整控件的大小和重新定位。虽然在使用WPF时有相关的实践应... 查看详情

wpf的特点和优点哪些?

...定”功能,使得MVVM得以实现,成为“属性驱动”,而非WinForm的“事件驱动”;属性的更改可以自动获得,甚至动过转换器触发各种展示/行为的变更;3.绚丽的展示效果,WPF(WindowsPresentationFundation)顾名思义其强大的图形化API为... 查看详情

谈谈css性能

CSS性能优化1、衡量属性和布局的消耗代价;2、探索W3C的性能优化新规范;3、用测试数据判断优化策略。 慎重选择高消耗的样式1、box-shadows;2、border-radius;3、transparency;4、transforms;5、CSSfitters(性能杀手)。 避免过分重排... 查看详情

一句话知识:如何解决winform自动缩放产生的布局问题.

...logs.com/KenBlove/articles/1281823.html有时候你会发现本来好好的WinForm程序在别的机器上显示的尺寸就不对了。这些问题主要发生在背景图片、图片框、窗口布局上。那么那就很可能是因为WinForm的自动放缩功能。因为不同语言的系统使... 查看详情

2021-11-26wpf面试题谈谈什么是wpf?

...表现层UI开发框架,全称WindowsPresentationFoundation。相对Winform来讲,它使用一种全新的桌面应用程序UI的开发方式。除了像Winform那样在“Windows窗体”上删除控件之外,WPF还为应用程序开发提供了额外的功能改善,包... 查看详情

Qt小部件/布局的WinForm“Dock Fill”等效?

】Qt小部件/布局的WinForm“DockFill”等效?【英文标题】:EquivalentofWinForm"DockFill"forQtWidgets/Layouts?【发布时间】:2012-07-0618:15:05【问题描述】:从Qt开始(来自C#、WinForms)我想知道Dock:Fill的等价物是什么(控件应使用所有可... 查看详情

在 WinForms 中修改停靠布局

】在WinForms中修改停靠布局【英文标题】:ModifydockinglayoutinWinForms【发布时间】:2013-07-1021:05:01【问题描述】:我的表单上有一个SplitContainer,其Dock属性设置为Fill。它包含几个子控件,其中许多都附加了事件处理程序。后来我决... 查看详情

谈谈extjs的组件——容器与布局

概述在页面中,比較棘手的地方就是布局。而要实现布局。就得有能维护布局的容器。能够说,在我试过和使用过的Javascript框架中,ExtJS的布局是做得最优秀的一个,而这得益于它强大的容器类和丰富的布局类。在本文将介绍Ext... 查看详情

如何使用bootstrap搭建更合理的html结构

...在于其简单易用,更在于其样式的规范性以及HTML结构的合理性。但是很多人在使用Bootstrap时只是依照文档盲目的复制黏贴,并没有仔细考虑每个类的用处,也没有考虑HTML结构搭建的是否合理。在平时的工作中,我一直和同事强... 查看详情

winform容器控件

 容器控件:布局:2个属性:Anchor:锁定位置Dock:填充位置一般Dock是与容器控件配合使用Panel:就是一个区域,类似于DIV,可以独立布局,还可以让其它控件及容器在它的内部再次布局FlowLayoutPanel:流式布局容器,内容会默认... 查看详情

wpf之样式——style

wpf这门编写winform程序的技术相比常规的winform技术有一个很显著的特点——炫!怎么才能炫起来呢?我们都知道常规的winform技术就是拖控件,总的来说想用常规的winform技术来实现很好看的界面很难。但是wpf就可以实现起来很轻... 查看详情

devexpress与winform区别

参考技术A标准的DevExpress样式界面,在我的Winform开发框架中,也分为了传统性界面、DotNetBar样式界面、DevExpress样式界面这三种。顶部样式选择DevExpress控件可以将窗体的空间运用到极致;Winform开发框架DevExpress的应用,做了好多... 查看详情

vs工具下c#编写的winform程序运行缓慢问题

如题,补充:程序结构已经很合理了,SQL语句我也尽力了,感觉这样折腾好后的程序和VB编写的程序相比运行速度逊好多(就是慢好多,用的远程数据库)。请路过的诸位大侠指点一二。网上查了很多..感觉说的不够全面...呵呵,拜... 查看详情

vuejs 应用程序中多种布局的不同样式

】vuejs应用程序中多种布局的不同样式【英文标题】:Differentstylesformultiplelayoutsinvuejsapplications【发布时间】:2020-04-0408:09:47【问题描述】:我的项目中有两个完全不同的布局-它们都是两个独立的父路由,内部有许多嵌套组件。... 查看详情

winform布局方式

一、默认布局★可以加panel,也可以不加;★通过鼠标拖动控件的方式,根据自己的想法布局。拖动控件的过程中,会有对齐的线,方便操作;★也可选中要布局的控件,在工具栏中有对齐工具可供选择,也有调整各个控件大小... 查看详情

winform布局方式

一、默认布局★可以加panel,也可以不加;★通过鼠标拖动控件的方式,根据自己的想法布局。拖动控件的过程中,会有对齐的线,方便操作;★也可选中要布局的控件,在工具栏中有对齐工具可供选择,也有调整各个控件大小... 查看详情