转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
给.NET中的Windows窗体加载Xp样式         ★★★★

给.NET中的Windows窗体加载Xp样式

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1408 更新时间:2009/4/23 10:51:31

给.NET中的Windows窗体加载Xp样式

 

作者:Heath Stewart

介绍

当Windows XP 带着他特有的可视化样式或者主题发布时,许多人为他拥有的华丽界面而兴奋。然而,当.NET1.0正式版本发布的时候,许多人包括我自己为Windows 窗体不支持Windows XP 的可视化样式而失望。我对可视化样式的API函数和微软的.NET框架开发文档进行了一番研究,而后认识到为.NET应用程序加上Xp样式也不是很难。

下面的将通过一个简单的程序来为你的程序和控件加上Xp样式。内容适用于一些拥有能实现Xp样式的属性的控件,通过这些属性使他们产生Xp样式,同时通知Windows系统为你的应用程序和控件加上主题。

 

实现所需条件

你需要一些条件来实现这项功能:

         1.Microsoft .NET Framework SDK(必须)

         2.Microsoft Visual Studio .NET,他帮助你设计Windows窗体(可选)

         3.Windows XP 操作系统(可选),支持主题的正式版本操作系统

 

进入正题

打开Visual Studio .NET 建立一个新的Windows 应用程序。在这里我将使用C#来作为编程语言,因此如果你使用Visual Basic.NET,你就需要转换代码。当你建好项目后,打开AssemblyInfo.cs文件,在AssemblyTitle,AssemblyDescription以及AssemblyVersion中填入值,修改AssemblyDelaySign的值为true。同时你也要修改AssemblyKeyFile的值为@”..\..\KeyFile.snk”,KeyFile.snk文件我们随后回来创建或者拷贝一个。

当你按照上面所说的完成后,你的代码看起来应该象下面:

using System.Reflection;

using System.Runtime.CompilerServices;

 

[assembly: AssemblyTitle("Theme Test")]

[assembly: AssemblyDescription("Testing Windows XP Visual Styles.")]

[assembly: AssemblyConfiguration("")]

[assembly: AssemblyCompany("")]

[assembly: AssemblyProduct("")]

[assembly: AssemblyCopyright("")]

[assembly: AssemblyTrademark("")]

[assembly: AssemblyCulture("")]           

[assembly: AssemblyVersion("1.0.0.0")]

[assembly: AssemblyDelaySign(true)]

[assembly: AssemblyKeyFile(@"..\..\KeyFile.snk")]

[assembly: AssemblyKeyName("")]

 

现在,打开Form1.cs窗体设计界面加一些Windows窗体控件到上面,比如ListViews,Buttons,GroupBoxes,ProgressBars或者更多,下面列出了所有支持Xp样式的孔件:

TextBox

RichTextBox

HScrollBar

VScrollBar

ProgressBar

TabControl

MainMenu

ContextMenu

ComboBox

DataGrid

ListBox

ListView

TreeView

DateTimePicker

MonthCalendar

Splitter

TrackBar

StatusBar

ToolBar

TreeView

ListView

 

对于这些控件,有些是默认就支持的,另外的一些特定的控件是从ButtonBase,GroupBox,或者Label继承而来,你需要设置他们的FlatStyle属性为System,那些我会做一些简短的说明。

当你编译这个应用程序后,你会发现这个Windows Forms看上去不象带有Xp样式,要找到原因,请往下看。

 

Windows Xp样式的显示原理

简单描述:Comctl32.dll,版本为6。Comctl32.dll,或者那些普通控件使用了很长时间。这个动态连接库被基础控件使用,同时User32.Dll提供给用户控件。在版本6的Comctl32.dll中,所有的控件都放入在里面,因此他们都支持主题。但是新版本的Comctl32.dll不象上一个版本,要使用Windows XP样式,你必须使用包含有Comctl32.dll的操作系统,比如Windows XP。

对于那些被支持的控件,他们的样式是同一些特殊的主题资源相关的,而这些就是用来在客户界面进行绘制。对于那些派生于ButtonBase,GroupBox和Lablel的控件必须把FlatStyle属性设置成FlatStyle.System枚举值,这样系统就可以对他们进行绘制。

为了使操作系统给我们的控件加主题样式,你需要通知系统让版本6的Comctl32.dll作为默认。系统默认的使用的是版本5的Comctl32.dll,对于.NET的程序也是如此,但是我们会让程序在执行时使用版本6的Comctl32.dll。

给你的项目增加一个XML文件,文件命取为[你的应用程序名].exe.manifest,[你的应用程序名]指得就是项目编译生成的主exe文件。设置编译类型为”None”。

假如你的AssemblyInfo.cs中的代码就是上面提到的那样,那么新建的[你的应用程序名].exe.manifest文件应该为下面的样子:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly

    xmlns="urn:schemas-microsoft-com:asm.v1"

    manifestVersion="1.0">

    <assemblyIdentity

        version="1.0.0.0"

        processorArchitecture="X86"

        name="Theme Test"

        type="win32" />

    <description>Testing Windows XP Visual Styles.</description>

    <dependency>

        <dependentAssembly>

            <assemblyIdentity

                type="win32"

                name="Microsoft.Windows.Common-Controls"

          &

[1] [2]  下一页


[系统软件]windows下Apache+php+mysql的安装与配置图解  [操作系统]在Windows中玩转Linux操作系统
[操作系统]死马还当活马医:6种方法挽救Windows系统  [聊天工具]四大更新 Windows Live Msn 8.1评测
[聊天工具]Windows Live Messenger最新0683版亮相_联络工具_…  [聊天工具]Windows Live Mail招人爱的N个理由_联络工具_Wind…
[聊天工具]Windows Live Mail Desktop多图欣赏_联络工具_Win…  [聊天工具]OE老了 微软开发新邮件客户端取而代之_联络工具
[聊天工具]Windows Live Messenger中文版试用报告(一)__天极…  [聊天工具]Windows Live Messenger 8 Beta1高清图赏__天极Ye…
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台