C# WinForm 换肤

    感谢http://blog.csdn.net/alldj/archive/2007/04/13/1564072.aspx作者提供的方法,让笔者实现了更换皮肤的功能。不过该页面的源程序始终无法下载,所以笔者开始只能复制上面列出的所有代码,然后在VS中运行。程序编译顺利通过,不过运行时出现了System.NullReferenceException的错误,显示IrisSkin2对象为空。于是笔者调试了一下,问题出现在这一句话:

    se = new Sunisoft.IrisSkin.SkinEngine(Application.OpenForms[0], thisDll.GetManifestResourceStream("skintest.skin." + st.ToString() + ".ssk"));

    "skintest.skin." + st.ToString() + ".ssk"字符串的路径不正确,所以初始化未能成功。仔细研究了一下,原来从网页上复制到VS中(使用的浏览器为Firefox 3.1),引号结束前多了一个空格,即上面字符串在VS中为

    "skintest.skin. " + st.ToString() + ".ssk "

    多了一个空格,导致程序的运行失败!

    下面为笔者的源程序代码(点击下载):

    skinTest

    程序截图如下:(Mdi窗体, VS 2005成功运行, Windows XP)

    skin2

    补充说明:

    如果窗体中有第三方控件,则可能在调试的时候vs出现错误“Loaderlock was detected”错误,解决方法如下(网络收集):

1.改注册表
    在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework下面增加一个String,值为"0"
    不过这样做,在该计算机上所有基于.NET2.0开发都得不到MDA的好处。
2.为项目增加一个配置文件.
3.直接修改项目设置
    最简单的方法,在"Debug"菜单下----"Exceptions"----"Managed Debugging Assistants"中勾掉"LoaderLock")

posted on 2009-03-06 11:00  strawberryww  阅读(2846)  评论(2编辑  收藏  举报