我有辦法: 先前貼的這篇文章大家可能覺的不太能理解,我注釋也確實寫的很少,步驟也不是很詳細,現在重修改一下,希望大家能指正。 1:控件(破解版,只限.Net2005)和皮膚下載地址如下(用影音傳送帶等下載工具下載): http://download1.csdn.net/down3/2
我有辦法:
先前貼的這篇文章大家可能覺的不太能理解,我注釋也確實寫的很少,步驟也不是很詳細,現在重修改一下,希望大家能指正。
1:控件(破解版,只限.Net2005)和皮膚下載地址如下(用影音傳送帶等下載工具下載):
http://download1.csdn.net/down3/20070605/05142029888.rar
DEMO程序(含源碼)
http://dl2.csdn.net/down4/20070628/28181121698.rar
2:載入
下載后的rar文件里有一個IrisSkin2.dll和一個skin文件夾。
添加引用,將IrisSkin2.dll引用進項目中。
然后在解決方案資源管理器里右擊項目→添加→新建文件夾,文件夾名為skin。
建完skin文件夾后再右擊這個文件夾→添加→現有項,在彈出的文件選擇框里選*.*所有文件,再把解壓出來的skin文件夾里的所有文件全選進去。
這時候我們可以看到skin文件夾里已經有了我們添加的所有的換膚文件了。再按ctrl鍵選中所有的skin文件夾里的文件,在屬性欄里可以看到“生成操作”一欄,默認選項是“無”,我們把它改成“嵌入的資源”。
3:類
下面我們新建一個類,把以下的代碼復制進去,別忘了把命名空間改成你自己的。
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Data;
//TestSkin命令空間,別忘了改成你自己的。
namespace TestSkin
{
class SkinClass
{
public static Sunisoft.IrisSkin.SkinEngine se = null;
///
/// 增加換膚菜單
///
///
public static void AddSkinMenu(ToolStripMenuItem toolMenu)
{
DataSet skin = new DataSet();
try
{
skin.ReadXml("skin.xml", XmlReadMode.Auto);
}
catch
{
}
if (skin == null || skin.Tables.Count < 1)
{
skin = new DataSet();
skin.Tables.Add("skin");
skin.Tables["skin"].Columns.Add("style");
System.Data.DataRow dr = skin.Tables["skin"].NewRow();
dr[0] = "系統默認";
skin.Tables[0].Rows.Add(dr);
skin.WriteXml("skin.xml", XmlWriteMode.IgnoreSchema);
}
foreach (SkinType st in (SkinType[])System.Enum.GetValues(typeof(SkinType)))
{
toolMenu.DropDownItems.Add(new ToolStripMenuItem(st.ToString()));
toolMenu.DropDownItems[toolMenu.DropDownItems.Count - 1].Click += new EventHandler(frm_Main_Click);
if (st.ToString() == skin.Tables[0].Rows[0][0].ToString())
{
((ToolStripMenuItem)toolMenu.DropDownItems[toolMenu.DropDownItems.Count - 1]).Checked = true;
frm_Main_Click(toolMenu.DropDownItems[toolMenu.DropDownItems.Count - 1], null);
}
}
toolMenu.DropDownItems.Add(new ToolStripMenuItem("系統默認"));
toolMenu.DropDownItems[toolMenu.DropDownItems.Count - 1].Click += new EventHandler(frm_Main_Click);
if (skin.Tables[0].Rows[0][0].ToString() == "系統默認")
{
((ToolStripMenuItem)toolMenu.DropDownItems[toolMenu.DropDownItems.Count - 1]).Checked = true;
}
}
static void frm_Main_Click(object sender, EventArgs e)
{
for (int i = 0; i < ((ToolStripMenuItem)((ToolStripMenuItem)sender).OwnerItem).DropDownItems.Count; i++)
{
if (((ToolStripMenuItem)sender).Text == ((ToolStripMenuItem)((ToolStripMenuItem)sender).OwnerItem).DropDownItems[i].Text)
{
((ToolStripMenuItem)sender).CheckState = CheckState.Checked;
DataSet skin = new DataSet();
skin.Tables.Add("skin");
skin.Tables["skin"].Columns.Add("style");
System.Data.DataRow dr = skin.Tables["skin"].NewRow();
dr[0] = ((ToolStripMenuItem)((ToolStripMenuItem)sender).OwnerItem).DropDownItems[i].Text;
skin.Tables[0].Rows.Add(dr);
skin.WriteXml("skin.xml", XmlWriteMode.IgnoreSchema);
}
else
{
((ToolStripMenuItem)((ToolStripMenuItem)((ToolStripMenuItem)sender).OwnerItem).DropDownItems[i]).CheckState = CheckState.Unchecked;
}
}
if (((ToolStripMenuItem)sender).Text == "系統默認")
{
RemoveSkin();
DataSet skin = new DataSet();
skin.Tables.Add("skin");
skin.Tables["skin"].Columns.Add("style");
System.Data.DataRow dr = skin.Tables["skin"].NewRow();
dr[0] = "系統默認";
skin.Tables[0].Rows.Add(dr);
skin.WriteXml("skin.xml", XmlWriteMode.IgnoreSchema);
return;
}
foreach (SkinType st in (SkinType[])System.Enum.GetValues(typeof(SkinType)))
{
if (st.ToString() == ((ToolStripMenuItem)sender).Text)
{
ChangeSkin(st);
return;
}
}
}
///
/// 改變皮膚
///
///
public static void ChangeSkin(SkinType st)
{
System.Reflection.Assembly thisDll = System.Reflection.Assembly.GetExecutingAssembly();
if (se == null)
{
//TestSkin是指命名空間,這里你可以換成你自己的。
se = new Sunisoft.IrisSkin.SkinEngine(Application.OpenForms[0], thisDll.GetManifestResourceStream("TestSkin.skin." + st.ToString() + ".ssk"));
se.Active = true;
for (int i = 0; i < Application.OpenForms.Count; i++)
{
se.AddForm(Application.OpenForms[i]);
}
}
else
{
//TestSkin是指命名空間,這里你可以換成你自己的。
se.SkinStream = thisDll.GetManifestResourceStream("TestSkin.skin." + st.ToString() + ".ssk");
se.Active = true;
}
}
///
/// 移除皮膚
///
public static void RemoveSkin()
{
if (se == null)
{
return;
}
else
{
se.Active = false;
}
}
}
///
/// 換膚類型
///
public enum SkinType
{
Calmness,
DeepCyan,
Eighteen,
Emerald,
GlassBrown,
Longhorn,
MacOS,
Midsummer,
MP10,
MSN,
OneBlue,
Page,
RealOne,
Silver,
SportsBlack,
SteelBlack,
vista1,
Vista2,
Warm,
Wave,
XPSilver
}
}
4:調用
在你的主窗體里加上一個MenuStrip菜單,建一個2級菜單(如:文件→更換皮膚),然后在Form_Load事件里寫上調用代碼:
private void Form1_Load(object sender, EventArgs e)
{
//“更換皮膚ToolStripMenuItem” 是上面例子里“更換皮膚”這個ToolStripMenuItem的Name。
SkinClass.AddSkinMenu(更換皮膚ToolStripMenuItem);
}
5:注
以下兩個方法是主要換膚用的:
ChangeSkin方法換膚
RemoveSkin方法恢復系統默認皮膚
大家可以不用直接給單獨一個窗體換膚。我以上的代碼是生成一個換膚菜單,然后所有的窗體都是自動進行換膚了。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1564072
我這可是引用別人的話!不用謝我!
QQ:8709325
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com