在VB.NET中使用XP风格界面

在VB.net中,从form启动的windows应用程序的风格默认就是XP的,但是如果设置从Main函数启动windows应用程序的话,界面就会回归成vb6那种难看的风格,那么这种情况下,应该怎么做才能使用XP风格界面呢?

 

从网上能搜到很多使用xp风格的方法,但是基本上都是以vb6为前提的,都要用到“主程序名.exe.manifest”这个xml配置文件,有的方法非常复杂(我还不会),也有比较方便,但是没有彻底解决问题的,每次重新编译都要再操作一遍的。

 

其实在vb.net中对于这个问题已经有非常方便的方法存在了,就是使用enableVisualStyles,具体方法如下:


Module main   

Sub main()
        Application.EnableVisualStyles()
        Application.DoEvents()
        Application.Run(frmMain)
    End Sub
End Module


     根据msdn的介绍,最好是在main函数中使用EnableVisualStyles,然后再用application运行窗体。另外,如果控件里有flatstyle属性时(如button,groupbox,checkedbox,radiobutton等),要将该属性改为system。
     使用这个方法有一点需要注意,就是一个application中只能使用一次enableVisualStyles,不然会抛出InteropServices.SEHException异常。

 

-----------------------------------------------------------------------------

 

下面再介绍下前面提到的比较简单但不彻底的方法:

 

创建一个.manifest文件。文件必须与目标程序在同一个文件夹(例如你的工程的/bin文件夹),并且名字必须是
  MyApp.exe.manifest,其中MyApp是你的程序文件名。文件的内容如下:


  <?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="MyApp" type="win32" />
  <description>Your application description here.</description>
  <dependency>
  <dependentAssembly>
  <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0"
  processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" />
  </dependentAssembly>
  </dependency>
  </assembly>
  将MyApp.exe替换为目标程序文件名,version改成你的版本。可以用记事本来建立这个文件。
  然后在.net工程中,将窗体的Button、Label的FlatStyle属性设置为System,如下图:
  


  这样,你建立的.net程序就可以呈现XP风格了。
  这里就出现了一个问题:无论更改MyApp.exe还是MyApp.exe.manifest的文件名,XP Sytle都会消失。

  解决办法就是将manifest文件直接嵌入.exe文件中去。方法是这样的:
  用Visual Studio.net打开.exe文件(这里是test_WMPSDK.exe),将会看到下面的东西:
  


  我们给它添加一个资源:
  


  在对话框中,我们找不到manifest类型。没关系,我们使用“导入”来导入:
  


  注意文件类型是“所有文件”。添加完后,要求资源类型,我们写入RT_MANIFEST:
  


  此时完成了资源添加:
  


  还没完,我们还要将资源的ID从101改为1:
  


  这样,保存.exe文件,运行一下看看(此时可以把.manifest文件删掉了):
  


  即使更改.exe文件名,程序仍然可以呈现XP Style。但是还有一个问题。因为资源是后期加入的,所以一旦你的工程重新生成,XP Style又会消失。比较彻底的办法是将manifest文件加入工程的资源当中去。

     至于如何把manifest文件加入工程资源,貌似非常复杂,我并没有深究,如果大家有兴趣,这方面的资料网上还是能搜到的。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值