css for winform及功能强大的配置类库(.net) -- 第一节,例子

本文介绍了如何在WinForm应用中引入CSS,以实现界面内容与设计的分离。作者分享了一个名为Wincss的开源项目,允许开发者创建支持CSS的WinForm控件,便于美工和程序员协作。文章通过一个简单的示例,演示了如何使用Wincss控件,并解释了其特性和工作原理。
摘要由CSDN通过智能技术生成

做软件久了,不管是搞设计还是写代码,天天这么type,慢慢的就有了自己的一点家底积累,类库啊,工具什么的,有些自我感觉还是还可以的,放着自己用似乎有点那个敝自珍的味道,最近看的人家网上发得多了,忽然心血来潮,于是乎就把自己写的一点小东西放到了网上,学着开源了。

这东西拿出来了,方便使用的就拿着用,不方便使用的给个意见该如何改,整天用着老外的东西感觉有点那个,自己折腾出来的给大伙用用,好用就拍拍,让我陶醉陶醉,有意见好的就吸收,踩我的自动忽略,左耳进右耳出,嘿嘿~~~

 

 

Web ApplicationWinForm Application是开发的较多的两个方向(当然还有后台一大堆其它方向又或者Mobile方面的,不过这里只是带个头,不细谈,忽略),各有各的优势啦,譬如Winform那细致的控制,又譬如那Web无需部署的特性,都是令对方眼红的优点,特别最近由Web转到开发Winform时更加发现,Web的界面内容与设计分离实在是Winform设计应该学的一样东西,可惜人家不支持,没办法。

工作需要,在Web上仔细的过滤了一遍,找不到任何可以令Winform实现向Web的界面内容与设计分离的工具,后来发现NetAdvantage倒有一套控件,如果用上它可以进行对所有属于它的控件进行界面风格控制,看起来似乎可以令我满意,于是用了它一下,好用是好用,不过首先不能进行精确的控制,譬如一个WinForm中的某个控件想进行位置或者背景色等等精确控制就无能为力了,不符合我要的界面内容与设计分离这一基本原则。

现成的找不到,那就自己写,不怕苦不怕难,发挥红军长征两万里的优秀才能,做出了以下一些要求:

1、  这是一个控件,方便实用;

2、  这个控件支持界面内容与功能代码分离,就是说,程序员把控件随便拉好后,就可以了,美工可以设计好类似webcss的东西,结合编译好的程序就可以出现一个好的效果;同时也需要支持后期设计。

3、  考虑到这种界面风格文件或许无需所有人各一份,所以应该支持共享,譬如httpftp之类的。

另外,winformweb有本质的不同,无须再服务器端统一处理,所以应该有自己的一些特色:

A、 保存即生效。举个web的例子来说,我们编写一个html页面后挂上一个css文件,一个Client打开了,这个时候我们出于某些考虑,改写了这个css文件,导致了整个html风格彻底变化了,此时在web上我们需要刷新一次才能生效,而我的要求是无需刷新即能在winform上生效。

B、 结构支持。Css文件本身比较复杂,很多class定义,也很多基于id的定义,看得我直叫烦,所以我要求这个控件使用的文件格式支持结构控制,譬如将类风格定义放在class.css,将id控制放在id.css,最后在组织起来。

以上几点要求已经可以满足大部分人的使用要求了,所以第一步就是做出这样一个控件出来,我叫它wincss,意思为css for winform,参考具体下载地址

http://sourceforge.net/projects/wincss

这一项目我是基于我的另外一个开源项目maxcohttp://sourceforge.net/projects/maxco)的,在本文接下来的章节中我会对这两个项目都进行比较详细的介绍的。

Wincss是一个做了的项目,那么口说自然没有什么意义,本节首先做一个简单的例子,然后在接下来的内容中再深入了解内核。

第一步,到wincss的网址上把wincss下载下来,解压缩。

第二步,新建一个.net winform 项目,随便添加一个窗口,往其中随意拖入一个PictureBox控件,命名为picture,拖入一个TextBox控件,命名为text,拖入一个Button控件,命名为button。如图


第三步,拖入一个一个CssComponent控件,该控件在下载的wincss包中。


并设置属性如下


第四步,编译并生成该exe文件。

第五步,在exe所在目录建立文件css.xmlid.xml, id1.xml, type.xml, type1.xml, this.xml, this1.xml。并输入以下内容

css.xml
<? xml version="1.0" encoding="utf-8" ?>
< Maxcos >
  
< Name > Root </ Name >
  
< Value ></ Value >    <!--
  First style 
    <Include>Id1.xml</Include>
    <Include>Type1.xml</Include>
    <Include>This1.xml</Include>
-->  
    
<!--   
    Second style
    <Include>Id.xml</Include>
    <Include>Type.xml</Include>
    <Include>This.xml</Include>
    
-->
</ Maxcos >
id1.xml
<? xml version="1.0" encoding="utf-8" ?>
< Maxcos >
  
< Name > Root </ Name >
  
< Value  />
<!---->
    
< Item >
        
< Name > Id </ Name >
        
< Value  />
        
< Item >
            
< Name > button </ Name >
            
< Value  />
            
< Item >
                
< Name > BackColor </ Name >
                
< Value >
                    
< ValueString  SerializeAs ="String"  Type ="System.Drawing.Color, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" > LightPink </ ValueString >
                
</ Value >
            
</ Item >
            
< Item >
                
< Name > Text </ Name >
                
< Value >
                    
< ValueString  SerializeAs ="String"  Type ="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > Right </ ValueString >
                
</ Value >
            
</ Item >
            
< Item >
                
< Name > Dock </ Name >
                
< Value >
                    
< ValueString  SerializeAs ="String"  
                                 Type
="System.Windows.Forms.DockStyle, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
                        Right
                    
</ ValueString >
                
</ Value >
            
</ Item >
        
</ Item >
        
< Item >
            
< Name > text </ Name >
            
< Value  />
            
< Item >
                
< Name > BackColor </ Name >
                
< Value >
                    
< ValueString  SerializeAs ="String"  Type ="System.Drawing.Color, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" > LightSteelBlue </ ValueString >
                
</ Value >
            
</ Item >
            
< Item >
                
< Name > Font </ Name >
                
< Value >
                    
< ValueString  SerializeAs ="String"  Type ="System.Drawing.Font, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" > 宋体, 10pt </ ValueString >
                
</ Value >
            
</ Item >
            
< Item >
                
< Name > Text </ Name >
                
< Value >
                    
< ValueString  SerializeAs ="String"  Type ="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > Multi line text area, dock style is 'Top'
^-^
</ ValueString >
                
</ Value >
            
</ Item >
            
< Item >
                
< Name > Size </ Name >
                
< Value >
                    
< ValueString  SerializeAs ="String"  Type ="System.Drawing.Size, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" >
                        400, 200
                    
</ ValueString >
                
</ Value >
            
</ Item >
            
< Item >
                
< Name > Dock </ Name >
                
< Value >
                    
< ValueString  SerializeAs ="String"  
                                 Type
="System.Windows.Forms.DockStyle, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
                        Top
                    
</ ValueString >
                
</ Value >
            
</ Item >
            
< Item >
                
< Name > Multiline </ Name >
                
< Value >
                    
< ValueString  SerializeAs ="String"  
                                 Type
="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
                        true
                    
</ ValueString >
                
</ Value >
            
</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值