在 Windows XP 及后续版本中, .Net Framework 1.0 和 1.1 下对 .Net WinForm 启用 XP Style,单纯的调用 Application.EnableVisualStyles(); 会有很多问题,尤其是 Toolbar 图标不能正确绘制的问题尤为明显。

针对这个 Framework 的 bug,一般有下面三种方法来解决:

在 Application.EnableVisualStyles() 执行后直接执行一次 Application.EnableVisualStyles() 如:
 /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
   Application.EnableVisualStyles();
   Application.DoEvents();

   Application.Run(new Form());
} 启用一个线程来运行程序:
 /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
   Application.EnableVisualStyles();
   new Thread(new ThreadStart(Runner)).Start();

}
static void Runner()
{
  Application.Run(new Form());
} 启用 .manifest :在应用程序目录下启用 .manifest 文件。

Risisi Reader 开始用的是第一种,但运行过程中不时的会抛出系统异常,然后就直接推出程序。最开始没有意识到是启用XP效果带来的问题,跟了一下跟不出结果,索性查看了异常的详细信息,如下:

System.Runtime.InteropServices.SEHException: 外部组件发生异常。

at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)

at System.Windows.Forms.ComponentManager.System.Windows.Forms.UnsafeNativeMethods+IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)

at System.Windows.Forms.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)

at System.Windows.Forms.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)

......

Google 了一下 System.Runtime.InteropServices.SEHException,结论是启用XP效果措施不当的问题。立即改为第三种,在应用程序目录下加了一个 Risisi.Reader.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="Risisi.Reader"
    type="win32" />
<description>Risisi.Reader</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="X86"
            publicKeyToken="6595b64144ccf1df"
            language="*" />
    </dependentAssembly>
</dependency>
</assembly>

问题立刻解决。

不过不要忘了给控件的属性:FlatStyle = System

.Net Framework 2.0 中没有具体测试,不过 2.0 中 WinForm 的界面都自动处理成了 Office 11 的效果,应该没有这个bug了吧。大约。

转:http://blog.csdn.net/rambler8139/archive/2006/07/20/947867.aspx

.Net WinForm 启用XP效果的问题相关推荐

  1. [XenDesktop5.5]+Hyper-V上的Win7+VDA无法启用Aero效果

    XD5.5增加了对Win7 Desktop的Aero效果的支持,但是我们会发现安装在Hyper-V的Win7就无法启用Aero效果. 这是XD5.5的一个已知的问题,这是因为在Hyper-V的Win7 ...

  2. winform 实现动画效果。

    网页中我们借助jquery等框架可以实现很炫的动画效果,故想在winform中也实现同样的效果之一:滑入效果. 借助这个类即可: public static class Animation     { ...

  3. C# winform textbox 水印效果

    在使用 C# 的 TextBox 控件时,有时候会有以下需求:在用户没有输入文字时,TextBox 有文字提示,如下图. 但是 C# 自带的 TextBox 控件貌似没有这个属性,于是 Google ...

  4. 使用 Windows XP 的外观风格

    目录 简介 ComCtl32.dll 版本 6 外观风格任务 在未使用第三方扩展的应用程序中使用 ComCtl32.dll 版本 6 在使用扩展.插件或进程内运行的 DLL 的应用程序中使用 ComC ...

  5. 电脑市场装机版Ghost XP SP2 v2.0 [修正版]

    ∷软件简介∷ 电脑市场装机版V2.0[修正版] 697MB  MD5: C27118E85BAD8DB6E13C810123FCB479         698MB   未修正前MD5: 9C0BF7 ...

  6. 电脑市场Ghost XP SP2纯净版v3.0

    〓〓〓〓〓 电脑市场Ghost XP SP2纯净版v3.0 〓〓〓〓〓 文件: 电脑市场GhostXP纯净版V3.0.iso 大小: 716279808 字节(683MB) 时间: 2008年3月5日 ...

  7. 电脑市场Ghost XP SP2装机版v3.0

    〓〓〓〓〓〓〓〓 电脑市场Ghost XP SP2装机版v3.0 〓〓〓〓〓〓〓〓〓 文件:电脑市场GhostXP装机版v3.0.iso 大小: 707483648 字节(674Mb) 时间: 200 ...

  8. html5实现ios长按图标后进入图标排序及删除功能的效果

    2019独角兽企业重金招聘Python工程师标准>>> html5实现ios长按图标后进入图标排序及删除功能的效果 我们知道在ios(国产定制安卓系统基本都有)设备上按下图标,图标就 ...

  9. css3 仿aero,让Qt支持Win7的Aero和毛玻璃效果

    Qt5增加了许多特性,其中 Qt Windows Extras 模块就增加了对Win7 Aero 效果的支持. 官网的介绍如下: Qt Windows Extras provide classes a ...

最新文章

  1. 一个小度科技就估值200亿,百度现在被低估了吗?
  2. 使用php开发,基于swoole扩展开发的工具 swoole-crontab
  3. 内卷时代的晋升述职要“想明白”和“讲清楚”
  4. python编程制作接金币游戏_pygame学习笔记(6):完成一个简单的游戏
  5. JavaScript 预解析机制
  6. 12 个顶级 Bug 跟踪工具
  7. Buy Tickets POJ - 2828 思维+线段树
  8. 怎么批量查找关键词-批量查找关键词软件工具
  9. 令牌桶 java_服务限流(自定义注解令牌桶算法)
  10. Matlab画图线型、符号及颜色设置
  11. python手工打码_python云打码
  12. Windows安全中心打开空白
  13. seaborn关联图表之折线图和散点图
  14. DBA-数据库管理员
  15. 适合于图像处理方向的SCI期刊杂志列表【部分转载】
  16. 一个读者大佬精心总结的阿里、腾讯、宇宙条大厂 Offer 面经和硬核面试攻略
  17. 计算机应用基础演示文稿内容,计算机应用基础(PowerPoint 2003电子演示文稿系统)...
  18. 浅谈阿里云混合云新一代运维平台演进与实践
  19. 苹果人机交互指南_苹果人机界面设计指南的10个见解
  20. 如何写一个一天爬取 100 万张网页的爬虫

热门文章

  1. Word打开时显示*模板*,删除模板
  2. Django通过一个下拉框确定另外一个下拉框的值,并关联起来
  3. unicode html转义字符,HTML转义字符 Unicode和CSS伪类介绍(示例代码)
  4. [蓝桥杯][2018年第九届真题]全球变暖
  5. cass绘制围墙lisp_CASS中用LISP完成高程值的可视化处理
  6. 一次非常有意思的SQL优化经历:从30248.271s到0.001s
  7. 主板定制 如何定制主板这些流程要知道
  8. Jenkins持续集成环境, 如何自定义 maven repositories
  9. [转]UpdatePanel的用法详解
  10. android studio 更改背景和设置字体大小