[ZT]c# 程式皮膚控制項

來源:互聯網
上載者:User

Visual Studio 2005工具箱上右擊選擇“選擇項”,慢慢等...
在彈出的“選擇工具箱項”選項卡中,點擊“瀏覽”,找到IrisSkin2.dll存放的位置,雙擊,
你會發現多了個“SkinEngine”,確定。
將公用控制項裡的“SkinEngine”,拖到表單上,將皮膚檔案*.ssk在“方案總管”中
添加到bin檔案夾下的Debug檔案夾下。(先複製皮膚檔案*.ssk,在Debug檔案夾上右擊“粘貼”)
在初始化時加上一句:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
       public partial class Form1 : Form
       {
           public Form1()
           {
               InitializeComponent();
            this.skinEngine1.SkinFile = "*.ssk";
           }

           private void Form1_Load(object sender, EventArgs e)
           {

           }
       }
}

恢複預設皮膚請將紅色語句注釋或刪除

_______________________________________

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;
/// <summary>
/// 增加換膚菜單
/// </summary>
/// <param name= "toolMenu "> </param>
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;
}
}
}
/// <summary>
/// 改變皮膚
/// </summary>
/// <param name= "st "> </param>
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;
}
}
/// <summary>
/// 移除皮膚
/// </summary>
public static void RemoveSkin()
{
if (se == null)
{
return;
}
else
{
se.Active = false;
}
}
}
/// <summary>
/// 換膚類型
/// </summary>
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方法恢複系統預設皮膚

大家可以不用直接給單獨一個表單換膚。我以上的代碼是產生一個換膚菜單,然後所有的表單都是自動進行換膚了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.