| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1915 人关注过本帖
标题:如何把窗体设置成XP风格???
只看楼主 加入收藏
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
 问题点数:0 回复次数:6 
如何把窗体设置成XP风格???

如何把窗体设置成XP风格???

在那个路径设置?高手们帮忙呀,俺也想感受一下C#的强大的窗体功能。。。。。
最好把步骤说清楚一点。。。俺笨。。。。

搜索更多相关主题的帖子: XP风格 窗体 路径 
2006-12-31 00:11
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
唉。。。。这也没人愿意回答。。
这是C#入门经典的一个课后题。。。在这提问没想到。。。。。
伤心。。。

写程序像做爱一样,质量的好坏完全取决于心情……
2007-01-08 17:15
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
加一个Application.exe.manifest文件。"Application"是你的程序名。这样就OK了。.EXE.MANIFEST文件去网上DOWN一个.或在生成VC.NET工程时自带有一个,复制过来,改名就通用了.
还有一种是用一句代码,.ENABLEV..STYLE。这个不好,建议不要使用

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-01-09 08:14
IT浪子
Rank: 4
来 自:Nyist
等 级:贵宾
威 望:13
帖 子:402
专家分:20
注 册:2006-11-24
收藏
得分:0 

1 . static void Main()
{
Application.EnableVisualStyles();
Application.Run(new FormMain());
}
在非XP系统中实现XP风格


2 .win2003启动主题theme服务,在主题中选xp就完了

3.编程方式
给.NET中的Windows窗体加载Xp样式
当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文件应该为下面的样子:



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

manifestVersion="1.0">



version="1.0.0.0"

processorArchitecture="X86"

name="Theme Test"

type="win32" />

Testing Windows XP Visual Styles.







type="win32"

name="Microsoft.Windows.Common-Controls"

version="6.0.0.0"

processorArchitecture="X86"

publicKeyToken="6595b64144ccf1df"

language="*" />








你要适当的替换上面的”version”和”name”属性的值,使他和你项目里面的一样,分别对应AssemblyVersion和AssemblyTitle属性。那个”descryiption”元素也要同

你的AssemblyDescription属性符合。

接下去,打开命令提示窗口修改你的项目输出路径,应该把”bin\Debug”作为项目路径根目录。假设你已经加了sn.exe强名称工具的路径到你的系统环境变量,那

么在命令行中输入如下:

sn.exe –k ..\..\KeyFile.snk

上面的步骤会生成一个KeyFile.snk公钥文件,为了使你的程序集成为强类型程序集这个公钥是必须的。这个在许多情况下是必须需的。



最后一步添加Mnifest信息

你现在要在项目文件输出的所在目录。在我的例子中是一个简单的WindowsApplication1.exe文件,接下去会讲到他。

现在,退回到Visul Studio.NET,点击文件菜单—>打开,浏览到你的应用程序比如WindowsApplication1.exe,点击打开他我们会看到一个资源文件管理树。

1.右键在根节点上点击选择“添加资源”。

2.点击“导入”按钮,在你的项目路径中找到WindowsApplication.exe.mnifest并打开他。

3.在自定义资源类型对话框中我们输入RT_MANIFEST然后点击确定。

4.保存所有文件让我们回到先前的资源来浏览树。我们现在可以看到一个RT_MANIFEST的节点。

5.点击选中他下面那个新加的资源文件,通常的名字是101。在属性窗口里修改他的ID值为1,再一次保存你的应用程序。

6.关闭你打开的资源浏览窗口回到命令行提示符下,输入下面的命令:

sn –R WindowsApplication1.exe ..\..\KeyFile.snk

执行后会输出一些版本信息,最后显示:

Assembly ‘WindowsApplication1.exe’ successfully re-signed

运行你的.NET应用程序你就会看到Windows XP样式了。



概要

你不需要做很多工作就可以把Windows XP 可视化样式加入到你的应用程序和控件。使用这些新的样式将会带给你的窗体新的视觉,而这些经常在商业程序上

用到。许多公司都花精力去开发这方面的东西,而现在你可以不用做很多工作就可以做到。

请记住把那些带有FlatStyle属性的控件设置为FlatStyle.System,同时在编译你的程序后加入manifest资源就象上面的样板文件。当这些都做好了以后剩下的就是

完成对程序集的签名。如果你想要测试你的应用程序或者你有权限对他进行签名,你可以通过下面的命令关闭对程序集的验证:

sn.exe –Vr WindowsApplication1.exe

立即行动,为你的应用程序加上Xp样式,使你的产品更有特点。这样做不会花很多时间但是效果是显而易见的。


你不能让所有人都满意,因为不是所有人都是人!
2007-01-09 10:54
hponlyone
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-1-3
收藏
得分:0 
四楼的辛苦了,总算明白了,3Q
2007-01-09 11:18
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
谢了各位。。
偶回去试试

写程序像做爱一样,质量的好坏完全取决于心情……
2007-01-11 12:12
accpfriend
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:167
专家分:102
注 册:2006-12-31
收藏
得分:0 
想问下,做完后,我打包成安装包,在客户机上会出错吗,打包要把什么打进去?

详细给个说明
2007-01-11 12:43
快速回复:如何把窗体设置成XP风格???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017081 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved