.Net下实现Windows XP风格界面程序

时间:2021-07-09 19:24:29

Windows XP发布时,我们中许多人都为她华丽漂亮的界面折服和兴奋。然而,.NET1.0发布时,我们中又有许多人,包括我自己,对它不支持XP风格感到大失所望。可事实是,在Windows   XP(只限于我windowsXP)里.NET支持XP风格,只是还要您做一点小工作。  
            跟随下面的步骤,使您的程序拥有XP风格的界面,GO!  
   
  1.   新建一个Windows应用程序,然后打开AssemblyInfo.cs,修改一下内容,下面的是示例代码:  
  using   System.Reflection;  
  using   System.Runtime.CompilerServices;  
   
  [assembly:   AssemblyTitle("abc")]  
  [assembly:   AssemblyDescription("abc")]  
  [assembly:   AssemblyConfiguration("")]  
  [assembly:   AssemblyCompany("")]  
  [assembly:   AssemblyProduct("")]  
  [assembly:   AssemblyCopyright("")]  
  [assembly:   AssemblyTrademark("")]  
  [assembly:   AssemblyCulture("")]  
  [assembly:   AssemblyVersion("1.0.0.0")]  
  [assembly:   AssemblyDelaySign(false)]  
  [assembly:   AssemblyKeyFile("")]  
  [assembly:   AssemblyKeyName("")]  
   
  2.   往项目添加新项。新添加一个XML文件,将文件命名为   [您的程序名].exe.manifest,[您的程序名]指的是在   ../bin/debug   文件夹里生成的可执行程序名   。文件的内容示例如下:您只要根据您在AssemblyInfo.cs里所作的设置修改   version="1.0.0.0",   name="abc",   <description>abc</description>   这几个值就可以了。  
   
  <?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="abc"  
                  type="win32"   />  
          <description>abc</description>  
          <dependency>  
                  <dependentAssembly>  
                          <assemblyIdentity    
                                  type="win32"    
                                  name="Microsoft.Windows.Common-Controls"    
                                  version="6.0.0.0"    
                                  processorArchitecture="X86"    
                                  publicKeyToken="6595b64144ccf1df"    
                                  language="*"   />    
                  </dependentAssembly>    
          </dependency>    
  </assembly>  
   
  重新编译程序。   注意,从ButtonBase,GroupBox和Label继承下来的组件必须将FlatStyle属性设为System。  
   
  3.   将   [您的程序名].exe.manifest     文件添加到程序的可执行文件  
   
  (1)菜单-->文件-->打开,打开../bin/debug/[您的程序名].exe,现在您可以看到一个资源浏览树;  
  (2)右击根目录[您的程序名],单击"添加资源...";  
  (3)在跳出的对话框中单击“自定义...”;  
  (4)将资源类型命名为RT_MANIFEST,确定;  
  (5)双击资源树的RT_MANIFEST下的项(一般情况下是101),Copy   文件   [您的程序名].exe.manifest   的内容,粘贴在打开的文件中,粘贴的结果是二进制形式;  
  (6)保存,然后将101项的ID改为1,再保存。注意,不要重新对程序进行编译。  
   
  现在,重新打开您的程序,怎么样,界面应该不错吧。  
   
  原理: 问题的关键在于comctl32.dll。您搜索一下您的计算机,将发现有两个comctl32.dll。组件的外观就与这两个DLL中的特定资源相联系,它们提供特定的资源用于组件客户区域的绘制。对于继承于ButtonBase,GroupBox和Label的组件,将它们的FlatStyle属性设为System的目的也是为了让系统对组件进行绘制。 默认情况下,系统将使用../Windows/System32目录下的DLL,您需要做的工作就是告诉系统使用另一个DLL,这就是将[您的程序名].exe.manifest 文件添加到可执行文件的目的。下面是支持XP风格的组件完整列表:Label,TextBox,   RichTextBox,   HScrollBox,   VScrollBox,   ProgressBar,   TabControl,   MainMenu,   ComboBox,   ContextMenu,   DataGrid,   ListBox,   ListView,   TreeView,   DataTimePicker,   MonthCalendar,   Splitter,TrackBar,   StatusBar,   ToolBar