随笔分类 - 控件使用
摘要:之前由于忙于赶项目进度而忽视了软件的用户体验,界面挺难看,有一天看见组长优化了某个窗体,让人感觉完全不一样,我也不甘示弱,要把我的程序做顺眼一点才行。我的程序是一个以TabControl为主要容器的窗体,这样的程序窗体在目前广泛使用,谷歌浏览器Chrome,360安全卫士,QQ,鲁大师等。重点是...
阅读全文
摘要:初次接触启动界面记不清是在哪一年了,估计是小学四年级第一次打开Office Word的时候吧,更记不清楚当时的启动界面是长啥样了。后来随着使用的软件越来越多,也见到各式各样的启动界面。下面就列举了两个平常本人平常最常见的窗体,其实windows系统在启动的过程中,有Window字样并且有动画效果的那个节面也算是一个启动界面。 其目的很明显,就是程序启动之后,由于加载主界面的时间过长而导致用户体验不佳,于是往往在显示主界面之前多显示一个不带windows窗体元素的窗体,来显示应用程序加载的进度或者直接是一个静态的视图,作用在于就是跟用户反映程序是有响应的并且正在运行当中,从而提高用户体验。...
阅读全文
摘要:以前大学做项目(Web的毕业论系统)就看见过在网页中嵌入Office的word,那时候用了哪个控件当时没记下来,我倒是忘了,最近发现在WinForm要嵌入Office的话,可以使用DSOFramerControl。环境 使用之前要注册一下COM组件才行,使用 regsvr32注册 dsoframer.ocx。要是用这个的话,系统里面肯定要有装Office,要是很好使用的话,还得有Office开发组件,获得这组件的途径可以是在安装Office时把PIA也安装上。在这里可以找到添加上工具箱当然这篇文章中只涉及到Word的使用,这个控件其实能给Office的其余成员——Excel,Visio和...
阅读全文
摘要:在Web上面要实现一个遮罩层或者说是蒙版吧,有了DIV那不算什么难事,只要给div定好位置和大小,把颜色的Alpha值设一下就有透明的效果。不过在Winform中实现起来就没那么简单了事。尝试过用一个Panel,那底色设成透明,真的透明了。窗体后面的东西都显示出来了。就是没把Panel盖住的控件显示出来。这样看来不是办法。谷了一会儿歌。找到了一个,还是要写控件的,不算难,但用到了一点儿没见过的东西。经一事长一智吧。 重写到了一个Control的属性CreateParams,它是CreateParams类型的。关于这个类,MSDN上简单解释道:封装创建控件时所需的信息。而依我看是关于样式的...
阅读全文
摘要:这个控件太傻瓜了,只搁在博客里算了。日前需要用到一个载入条,但不想找GIF图片,.NET里面没有提供这个控件,只有ProgressBar。自己写吧!要写也不难,就是周期性绘制一个长方形,让那个长方形不停地向右移动。这个周期性的操作可以开一条线程Thread。我就用了一个WinForm的控件Timer 用到了GDI+,重写OnPaint方法是免不了的。 1 protected override void OnPaint(PaintEventArgs e) 2 { 3 base.OnPaint(e); 4 Rec...
阅读全文
摘要:有天在想工作上的事的时候,看着.net原有的DataGridView,想起以前我写过的一篇文章,总结了一个好的Gird控件应该具备哪些功能,在那里我提及到了分组功能,就像jqGrid那样, 其实这样的显示型式很常见,就在平时邮箱的邮件列表就是按这种分组型式显示的,按今天、昨天、上周之类,在购物网站的历史订单处也可以看见这种Grid表的身影。但是原有的DataGridView并不支持这种分组功能。那只能扩展一下了。 之前写了一个多维表头的GirdView,有经验了,知道搞这种图形化的东西无非都是用GDI+,上网找了一些文章后有点愣住了,之前画表头的是在DataGridView的OnPai...
阅读全文
摘要:一时兴起,想写个模拟地铁驾驶的游戏,但是很多东西都不会,资源哪里有?例如列车前进时周围景物的动态效果怎么做出来,速度控制杆上各个幅度代表了多大的加速度。我很佩服也很羡慕《申城脉动》的作者,能写出那样的一个游戏和获得那么多的资源。地铁族上面资料不少的,但不会找出来,废话不多说。 里面要用到的速度仪表盘,上网看见别人画了不少很炫的,但提供下载没有。对GDI+不太了解的我只能自己写。幸亏看到一篇博文,是别人学生时代的实验报告的(呵呵!这就是差别)。里面的代码我没看,我只看了一幅图片就够了。之前只困惑于仪表盘上面的刻度是怎么画出来的,那篇文章里面有一幅图就是一幅三角函数的图。之前一直没想到这里要...
阅读全文
摘要:之前在写播放器的时候,遇到了一个问题,现在播放器无论是千千,KuGoo还是比较原始的MediaPlayer,它们的播放表都是可以拖拽的,直接把文件拖到播放表实现歌曲的添加那个先暂且不说,光是播放表里面的歌曲次序也可以通过拖拽来调整。但是VS提供的ListBox没能直接通过设定某个属性实现这个拖拽排序,于是俺就开始了实现这功能的探索,无意中还找到了ListBox与ListBox之间元素的拖拽,于是一并实现了,遂述此文以记之。 其实无论是ListBox里的拖拽排序,还是ListBox间的拖动,都是通过三个事件来实现的:DragDrop,DragOver和MouseDown,对于整个拖拽的过程...
阅读全文
摘要:Trackbar见了很多种,每种播放器的都有它自己风格的Trackbar,鄙人最近在写一个属于自己的播放器,但是不想使用VS工具箱里面的那个Trackbar,于是上网看了一下资料,自己也模仿地写了一个。 其实写这个控件,关键就是用GDI+来绘图,对于这个Trackbar控件必要的属性和行为(包括方法、事件),一个简单的Trackbar就能做出来了。感觉这个就是一个GDI+章节的练习吧。 我写的这个Trackbar是继承Control类的,不是TrackBar,也不是UserControl类,又不是ScrollableControl类。Trackbar有以下外放的属性MinValue:T...
阅读全文
摘要:背景对于.NET 原本提供的DataGridView控件,制作成如下形式的表格是毫无压力的。但是如果把表格改了一下,变成如下形式传统的DataGridView就做不到了,如果扩展一下还是行的,有不少网友也扩展了DataGridView控件,不过有些也只能制作出二维的表头。或者使用第三方的控件,之前也用过DevExpress的BoundGridView。不过在没有可使用的第三方控件的情况下,做到下面的效果,就有点麻烦了。那得自己扩展了,不过最后还是用了一个控件库的报表控件,Telerik的Reporting。不过我自己还是扩展了DataGridView,使之能制作出上面的报表。准备学习了一些网友
阅读全文
摘要:第一次写jQuery插件。自己感觉写的也不怎么样。写jQuery插件利用的就是这个东东jQuery.fn,例如jQuery.fn.pluginName=function(){};这个是我写的分页插件的样子插件通过一个外放的函数来进行翻页操作,无论是点击前进、后退、还是改变页面大小,都会调用该函数。先看看插件的代码结构 1 (function ($) { 2 3 //存放插件所需的属性字段 4 var PagerFields = { 5 }; 6 7 //插件的私有函数 8 ...
阅读全文
摘要:在Web的应用方面有js的插件实现自动完成(或叫智能提示)功能,但在WinForm窗体应用方面就没那么好了。TextBox控件本身是提供了一个自动提示功能,只要用上这三个属性:AutoCompleteCustomSource:AutoCompleteSource 属性设置为CustomSource 时要使用的 StringCollection。AutoCompleteMode:指示文本框的文本完成行为。AutoCompleteSource:自动完成源,可以是 AutoCompleteSource 的枚举值之一。就行了, 一个简单的示例如下textBox1.AutoCompleteCustomS
阅读全文
摘要:LayoutControl是一个不错的布局控件,即使是程序在运行当中,用户也可以按照个人喜好进行布局。但是此时如果LayoutControl里放置了PictureEdit,有可能会引发异常,异常信息是:内存不足。如果是通过以下方式PictureEdit1.Image = Image.FromStream(MyFileStream);或者将[]byte转换成Image对象,在,内存不足的异常就会被抛出。这貌似是控件的一个bug。解决的办法是调用Bitmap构造函数,即PictureEdit1.Image =new Bitmap( Image.FromStream(MyFileStream)) ;
阅读全文
摘要:滚轮翻页与传动的翻页更为方便,经过本人一番探讨与琢磨终于在XtraGrid的GridView中实现了鼠标滚轮翻页。我新建了一个组件继承原本的GridControl,在组件中添加了一个ImageList,专门存放一些资源图片。用于实现动态图的效果。添加一个自定义委托的参数与枚举,委托参数用于传递分页的信息。 public class PagingEventArgs : EventArgs { public int PageSize { get; set; } public int PageIndex { get; set; } } public...
阅读全文
摘要:支持多种类型的数据集合作为数据源 XtraGrid与传统的DataGridView一样,支持多种类型作为其数据源。下面例子是将DataTable, List<T>和数组分别绑定到XtraGrid里面。 //定义数据源List<Person> peopleList=new List<Person>{ { ID = 1, FirstName = "Magnus", LastName = "Hedlund", Sex = true, Birth = new DateTime(1999, 9, 9), Chinese = 60
阅读全文
摘要:支持多种类型的数据集合作为数据源 jqGrid可以绑定三种类型的数据:XML,JSON和数组。使用不同的数据类型主要是设置datatype属性,它的值分别为'xml','json','local'(数组)$("#grid1").jqgrid(........datatype: "xml",........); 下面则列举各种数据类型的格式 XML格式: <rows> <page></page> <total></total> <records
阅读全文
摘要:将JqGrid和XtraGrid拿来比较,觉得怪怪的,因为前者用于Web,后者是用于WinForm的。因此只能比较两者的功能优劣,实现某种功能、效果的方便性和效率。首先分别粗略介绍XtraGrid和jqGrid DevExpress是目前.net下最为强大和完整的UI控件库, XtraGrid是这个控件库中重要的控件之一。在XtraGrid中集成了大量的高级特征,所以使用它进行开发的人员只需要对其属性进行简单的设置或编 写少量的代码,就能创建出十分美观的界面,从而使开发的工作效率大幅提高。 特点如下完全支持ADO.NET,一闪而过的数据装入速度,XtraGrid充分利用内建的ADO.N...
阅读全文