一.概要 Windows XP开创了一种全新的Windows用户界面(UI)这种用户界面给用户一种现代化的超时髦的感受Windows XP新创了闪亮的具有圆形边角的控件以及极富未来派气息的进度条等具有新风格的控件 而现在的Visual StudioNet也具备了此类控件那么开发者就想能否在自己开发的程序中使用这类超酷的控件呢答案是肯定的程序员所要做的仅仅是添加一些引用以及一个资源文件本文就通过介绍一个实例向大家介绍如何在Visual Basic和Visual C#下将控件的Windows XP风格应用到自己的程序中 注本文介绍的控件风格特性只能在Windows XP下的运用程序中实现 二.介绍 我们先来做一个有关控件风格的比较 在Windows XP下的控件具有一种全新的外观图示如下 而在Visual StudioNet中提供的控件虽然和Windows XP下的是同样的但是它们的外观却截然不同图示如下 本文就向大家介绍如何使Visual Studio中的控件和Windows XP下的控件一样具有超酷的外观良好的用户界面 你可以认为一个窗体由两个相互独立的部分组成一个客户区以及一个非客户区所有在Windows XP操作系统上运行的程序都有一个非客户区它包括窗体框架标题栏以及的非客户区的滚动条操作系统会自动给非客户区应用Windows XP风格所以尽管什么也没做你也可以看到自己的程序在Windows XP上运行时具有新风格的窗体框架标题栏以及滚动条而我们真正要做的就是使客户区的控件也具有Windows XP的风格 三.实现原理 非客户区的外观是由当前所应用的视觉风格决定的一个运用程序或是操作系统的视觉风格是可以被更改的就像上面提到的那样当一个运用程序运行在Windows XP上时窗体的滚动条以及标题栏就立即改变了外观风格只要运用程序应用了版本为的Comctldll那么其中的某些控件就是自动的呈现新的外观 这类控件如下 其他的控件则需要一定的条件确切地说从SystemWindowsFormsButtonBase类继承过来的控件(ButtonRadioButtonGroupBox以及CheckBox等控件)有一个FlatStyle属性这个属性表明控件应该先被绘制通过设置这个属性控件可以用以下几种方式来绘制 你可以发现当FlatStyle属性被设置为System后控件的外观就由用户的操作系统设置所决定这样的话要是用户的操作系统为Windows XP那么相应控件的外观就会呈现Windows XP的风格了 当FlatStyle属性被设置为System后能改变视觉风格的控件如下 Button 控件 RadioButton 控件 CheckBox 控件 GroupBox 控件 最后还有一些控件在Windows XP和Visual Studio下是一样的这些控件如下 Label 控件 LinkLabel 控件 DomainUpDown 控件 NumericUpDown 控件 CheckedListBox 控件 四.使用Manifest文件 如果你想在你的运用程序中运用Windows XP的外观效果你必须给你的工程添加一个Manifest文件(在建立工程过程中用来确定资源的一个文件)这个文件指明了在工程中应用版本为的Comctldll文件(只要这个文件存在)版本为的Comctldll文件包括了一些新的控件以及一些控件的新特性它和以前版本的最大的差异就是它支持控件外观效果的改变 不像以前的版本版本为的Comctldll是不可以被重新发布的你只可以在包含它的操作系统中使用它的动态连接库(DLL)Windows XP既包含了版本为的又包含了版本为的(在默认的情况下运用程序是用版本为的Comctldll的)在版本为的Comctldll中包含了用户控件和一般控件你只要改变和这些控件相关的dll文件就可以使它们呈现出Winodws XP的外观风格了 为了和用户的计算机操作系统相协调你必须在你的运用程序中建立一个Manifest文件来明确的指定其窗体控件使用的是版本为的Comctldll该Manifest文件是一个XML文件它包含在你的程序中作为一个资源或是在可执行文件目录下的一个单独的文件 因此为了使你的运用程序具有像Windows XP那样的外观效果你必须 .若控件有FlatStyle属性则把它设置为FlatStyleSystem .建立一个Manifest文件将版本为的Comctldll捆绑到你的运用程序中(下面的例子中的Manifest文件可以将该Comctldll捆绑到任何用Visual StudioNet建立的运用程序中) .把这个资源(Manifest文件)添加到你的可执行文件并进行重建 五.将Windows XP视觉风格应用到控件中 学会应用Windows XP视觉风格的最简单的方法就是学习做一个实例本文最后就向大家介绍任何建立一个简单的运用程序并使它的窗体上的控件具有Windows XP视觉风格 接下来我们要做的就是 .建立一个运用程序的工程并在窗体上添加一些控件 .建立一个Manifest文件将所需的DLL捆绑到你的运用程序中 .将该Manifest文件存放在可执行文件目录下 .添加一项资源(Manifest文件)到可执行文件 下面就开始创建新的工程…… 创建工程 .新建一个Windows运用程序工程(注请记住工程名以及工程存放的目录下面有用) .从工具箱里拖以下控件到窗体上并将它们排列好 Button 控件 RadioButton 控件 ProgressBar 控件 CheckBox 控件 Label 控件 (注虽然Label控件的外观不会改变它也被拖放到窗体上以作对比) .将ButtonRadioButtonCheckBox等控件的FlatStyle属性设置为System(技巧你可以在点击每个控件的同时按下Ctrl键这样就可以同时选中这三个控件然后在FlatStyle属性的下拉框中选定System即可) .双击Button控件以给它添加事件处理函数代码编辑器会自动打开 .添加以下一些代码设置ProgressBar控件的Value属性那样你就可以看到新的一个进度条了 Visual Basic Private Sub Button_Click(ByVal sender As SystemObject _ ByVal e As SystemEventArgs) Handles ButtonClick ProgressBarValue = End Sub // C# private void button_Click(object sender SystemEventArgs e) { progressBarValue = ; } .从生成菜单上选择生成选项 .最后全部保存 建立Manifest文件 建立一个XML文件将正确的版本的Comctldll捆绑到你的运用程序中 新建并编辑Manifest文件 .在解决方案资源管理器中右击工程名添加>添加新项 .在添加新项对话框中完成以下工作 A.在左边的方块中点击本地项目项 B.在右边的方块中选定文本文件 C.在名称框中以下面的方式命名文件exemanifest因此如果你的运用程序名为MyXPApp那么你应该将这个XML文件命名为MyXPAppexemanifest .点击打开按钮文本编辑器中打开了你新建的文件 .将下面的XML添加到该文本文件 encoding=UTF standalone=yes?> version= processorArchitecture=X name=MicrosoftWinweb type=win /> NET control deployment tool type=win name=MicrosoftWindowsCommonControls version= processorArchitecture=X publicKeyToken=bccfdf language=* /> .将上面第五行中的替换成你的运用程序名即可 .从生成菜单上选择生成选项 .最后全部保存 将该Manifest文件存放在可执行文件所在目录 现在将你建立的Manifest文件拷贝到可执行文件所在的目录 移动Manifest文件 .打开资源管理器到Visual Studio解决方案所在的目录在这个目录里你应该看到刚才建立的Manifest文件(命名为exemanifest) .选择该文件并拷贝它 .将当前目录转到obj>Debug在这个目录下你可以看到可执行文件 .将拷贝的Manifest文件粘贴到该目录下 添加Manifest文件到可执行文件 接下来在Visual Studio中打开可执行文件并将Manifest文件作为一项资源添加到其中 以资源方式添加Manifest文件 .在Visual Studio中在文件菜单下选择打开>文件 .转到可执行文件所在的目录并双击打开可执行文件 .在设计框中右击可执行文件名选择添加资 |