• C#皮肤更换功能


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Xml.Linq;
    using System.IO;
    
    namespace MySkinDemo
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();    
            }
            private void Form1_Load(object sender, EventArgs e)
            {
                LoadSkin();
                LoadFile();//加载皮肤菜单
            }
            #region 皮肤处理
            /// <summary>
            /// 加载皮肤
            /// </summary>
            private void LoadSkin()
            {
                string skinFilePath = Application.StartupPath + "\\SkinFile.xml";
                skinEngine1.SkinFile = XDocument.Load(skinFilePath).Element("skinFile").Element("path").Value;      
            }
            /// <summary>
            /// 加载文件
            /// </summary>
            private void LoadFile()
            {
                string path = Application.StartupPath + "\\Skins";
                DirectoryInfo di = new DirectoryInfo(path);//获取文件夹信息
                ToolStripMenuItem tsmiFile = null;
                foreach (FileInfo file in di.GetFiles().Where(x => x.Extension == ".ssk"))
                {
                    tsmiFile = new ToolStripMenuItem();//创建菜单对象
                    tsmiFile.Text = file.Name.Substring(0, file.Name.IndexOf(".ssk"));
                    this.tsmiSkin.DropDownItems.Add(tsmiFile);
                    tsmiFile.Click += new System.EventHandler(this.file_Click);
                }
            }
            /// <summary>
            /// 点击事件
            /// </summary>
            private void file_Click(object sender, EventArgs e)
            {
                string value = sender.ToString();
                string FullName = Application.StartupPath + "\\Skins\\" + value + ".ssk";
                skinEngine1.SkinFile = FullName;
                UpdateXmlElement(FullName); 
            }
            /// <summary>
            /// 修改xml文件节点
            /// </summary>
            private void UpdateXmlElement(string value)
            {
                ///加载XML文件
                string xmlFilePath = Application.StartupPath + "\\SkinFile.xml";
                XElement xe = XElement.Load(xmlFilePath);
                ///查找被替换的元素
                IEnumerable<XElement> element = xe.Elements("path");
                ///替换为新元素,并保存
                if (element.Count() > 0)
                {
                    XElement first = element.First();
                    ///设置新的属性
                    first.SetValue(value);
                }
                xe.Save(xmlFilePath);
            }
            #endregion
            private void button1_Click(object sender, EventArgs e)
            {
                new Form2().Show();
            }     
        }
    }

    效果如图:

  • 相关阅读:
    Best Practices for Background Jobs_3 Managing Device Awake State之电源锁、Alarm、WakefulBroadcastReceiver
    一种扩大View点击范围的方法
    IntentService
    DNS
    GPU硬件加速相关
    SOA 面向服务的体系结构
    android APK 文件的生成过程
    PHP简介
    代码安装apk文件
    View 的 focus 和 selected 状态, TabContainer实现
  • 原文地址:https://www.cnblogs.com/hesheng/p/2637421.html
Copyright © 2020-2023  润新知