zoukankan      html  css  js  c++  java
  • 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();
            }     
        }
    }

    效果如图:

  • 相关阅读:
    串口通信(2)
    串口通信(1)
    extern关键字的使用
    volatile关键字的使用
    Uart串口与RS232串口的区别
    DSP5509的时钟发生器(翻译总结自TI官方文档)
    DSP中的cmd文件
    pragma伪指令
    在C语言中嵌入汇编语言
    another app is currently holding the yum lock;waiting for it to exit...
  • 原文地址:https://www.cnblogs.com/hesheng/p/2637421.html
Copyright © 2011-2022 走看看