您的位置:首页 > 编程语言 > C#

C# WinForm 换肤

2009-03-06 11:00 267 查看
感谢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)



补充说明:

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

1.改注册表

在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework下面增加一个String,值为"0"

不过这样做,在该计算机上所有基于.NET2.0开发都得不到MDA的好处。

2.为项目增加一个配置文件.

3.直接修改项目设置

最简单的方法,在"Debug"菜单下----"Exceptions"----"Managed Debugging Assistants"中勾掉"LoaderLock")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: