search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

C# CMS 基本框架 [CS_CMS_Mini] – jashliao部落格

C# CMS 基本框架 [CS_CMS_Mini]


GITHUB:https://github.com/jash-git/CS_CMS_Mini


說明:

    01.使用SplitContainer分割畫面

    02.使用TreeView建立Menu選單

    03.之後只要用TabControl建立各頁面功能即可

程式碼:

Form_UI_Code/Menu.cs 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Lib;

namespace SYRIS_Mini
{
    public partial class MainFrm : Form
    {
        void CreateMenu()
        {
            minitrv0001.Nodes.Clear();//清除所有節點
            //---
            //建立選單變數
            TreeNode trnMainMenu01 = new TreeNode(Language.m_StrMainMenu01, 0, 0);
            trnMainMenu01.Nodes.Add("", Language.m_StrSubMenu01_01, 1, 1);
            trnMainMenu01.Nodes.Add("", Language.m_StrSubMenu01_02, 1, 1);
            TreeNode trnMainMenu02 = new TreeNode(Language.m_StrMainMenu02, 0, 0);
            trnMainMenu02.Nodes.Add("", Language.m_StrSubMenu02_01, 1, 1);
            trnMainMenu02.Nodes.Add("", Language.m_StrSubMenu02_02, 1, 1);
            trnMainMenu02.Nodes.Add("", Language.m_StrSubMenu02_03, 1, 1);
            TreeNode trnMainMenu03 = new TreeNode(Language.m_StrMainMenu03, 0, 0);
            trnMainMenu03.Nodes.Add("", Language.m_StrSubMenu03_01, 1, 1);
            trnMainMenu03.Nodes.Add("", Language.m_StrSubMenu03_02, 1, 1);
            trnMainMenu03.Nodes.Add("", Language.m_StrSubMenu03_03, 1, 1);
            trnMainMenu03.Nodes.Add("", Language.m_StrSubMenu03_04, 1, 1);
            TreeNode trnMainMenu04 = new TreeNode(Language.m_StrMainMenu04, 0, 0);
            trnMainMenu04.Nodes.Add("", Language.m_StrSubMenu04_01, 1, 1);
            //---建立選單變數

            //---
            //新增選單
            minitrv0001.Nodes.Add(trnMainMenu01);
            minitrv0001.Nodes.Add(trnMainMenu02);
            minitrv0001.Nodes.Add(trnMainMenu03);
            minitrv0001.Nodes.Add(trnMainMenu04);
            //---新增選單

            minitrv0001.CollapseAll();//關閉所有節點
            //minitrv0001.ExpandAll();//打開所有節點

            minitrv0001.SelectedNode = minitrv0001.Nodes[3];//展開特定節點
            minitrv0001.SelectedNode.Expand();
        }
    }
}


Lib/Language.cs 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.IO;

namespace Lib
{
    public class Language
    {

        static public ArrayList ALStrName = new ArrayList();
        static public ArrayList ALStrValue = new ArrayList();

        static public String m_StrMainMenu01;
        static public String m_StrMainMenu02;
        static public String m_StrMainMenu03;
        static public String m_StrMainMenu04;

        static public String m_StrSubMenu01_01;
        static public String m_StrSubMenu01_02;

        static public String m_StrSubMenu02_01;
        static public String m_StrSubMenu02_02;
        static public String m_StrSubMenu02_03;

        static public String m_StrSubMenu03_01;
        static public String m_StrSubMenu03_02;
        static public String m_StrSubMenu03_03;
        static public String m_StrSubMenu03_04;

        static public String m_StrSubMenu04_01;

        static public void initVar(int intswitch=0)
        {
            //ReadLangSet(Int32.Parse(CpuReaderTest.QRCode.m_Settings.m_StrLanguage));
            ReadLangSet(intswitch);
            ALStr2Var();
        }
        static public void ReadLangSet(int index)
        {
            //ALStr.Clear();
            //int i = 0;
            ALStrName.Clear();
            ALStrValue.Clear();
            StreamReader sr = null;
            switch (index)
            {
                case 0:
                    sr = new StreamReader("language\\tw.sycsv");//csv->sycsv//修改語系檔放在執行檔目錄下的language資料夾中 at 2017/04/06
                    break;
                case 1:
                    sr = new StreamReader("language\\cn.sycsv");//csv->sycsv//修改語系檔放在執行檔目錄下的language資料夾中 at 2017/04/06
                    break;
                case 2:
                    sr = new StreamReader("language\\en.sycsv");//csv->sycsv//修改語系檔放在執行檔目錄下的language資料夾中 at 2017/04/06
                    break;
                case 3:
                    sr = new StreamReader("language\\other.sycsv");//csv->sycsv//修改語系檔放在執行檔目錄下的language資料夾中 at 2017/04/06
                    break;
            }
            while (!sr.EndOfStream)// 每次讀取一行,直到檔尾
            {
                string line = sr.ReadLine();// 讀取文字到 line 變數
                if (line.Length > 0 && line.IndexOf(',') > 0)
                {
                    //String StrBuf = line.Substring(line.IndexOf(',') + 1);
                    string[] strs = line.Split(',');
                    ALStrName.Add(strs[0]);
                    ALStrValue.Add(strs[1]);
                    //ALStr.Add(StrBuf);
                    //i++;
                }
            }
            sr.Close();// 關閉串流
        }
        static public void ALStr2Var()
        {
            m_StrMainMenu01 = (String)ALStrValue[ALStrName.IndexOf("m_StrMainMenu01")];
            m_StrMainMenu02 = (String)ALStrValue[ALStrName.IndexOf("m_StrMainMenu02")];
            m_StrMainMenu03 = (String)ALStrValue[ALStrName.IndexOf("m_StrMainMenu03")];
            m_StrMainMenu04 = (String)ALStrValue[ALStrName.IndexOf("m_StrMainMenu04")];

            m_StrSubMenu01_01 = (String)ALStrValue[ALStrName.IndexOf("m_StrSubMenu01_01")];
            m_StrSubMenu01_02 = (String)ALStrValue[ALStrName.IndexOf("m_StrSubMenu01_02")];

            m_StrSubMenu02_01 = (String)ALStrValue[ALStrName.IndexOf("m_StrSubMenu02_01")];
            m_StrSubMenu02_02 = (String)ALStrValue[ALStrName.IndexOf("m_StrSubMenu02_02")];
            m_StrSubMenu02_03 = (String)ALStrValue[ALStrName.IndexOf("m_StrSubMenu02_03")];

            m_StrSubMenu03_01 = (String)ALStrValue[ALStrName.IndexOf("m_StrSubMenu03_01")];
            m_StrSubMenu03_02 = (String)ALStrValue[ALStrName.IndexOf("m_StrSubMenu03_02")];
            m_StrSubMenu03_03 = (String)ALStrValue[ALStrName.IndexOf("m_StrSubMenu03_03")];
            m_StrSubMenu03_04 = (String)ALStrValue[ALStrName.IndexOf("m_StrSubMenu03_04")];

            m_StrSubMenu04_01 = (String)ALStrValue[ALStrName.IndexOf("m_StrSubMenu04_01")];
        }
}//Language
}


Lib/Settings.cs 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace Lib
{
    public class Settings
    {
        public String m_StrLanguage;
        public String m_StrRandomStart;
        public Settings()
        {
            Random R = new Random();
            m_StrLanguage = "1";
            m_StrRandomStart = ""+ R.Next(0, 65535);
            if (System.IO.File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\SYRIS-RD300-C1.xml"))
            {
                readSettingXML();
            }
            else
            {
                saveSettingXML();
            }
        }
        public void saveSettingXML()
        {
            XmlTextWriter XTW = new XmlTextWriter(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\SYRISMini.xml", Encoding.UTF8);

            XTW.WriteStartDocument();

            XTW.WriteStartElement("Setting");

            XTW.WriteElementString("Language", m_StrLanguage);
            XTW.WriteElementString("RandomStart", m_StrRandomStart);
            XTW.Flush();
            XTW.Close();
        }
        public void readSettingXML()
        {
            try
            {
                XmlDocument xd = new XmlDocument();

                xd.Load(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\SYRISMini.xml");

                XmlNode root = xd.SelectSingleNode("//Setting");
                int i = 0;
                foreach (XmlElement elm in root.ChildNodes)
                {
                    switch (i)
                    {
                        case 0://Language
                            m_StrLanguage = elm.InnerText.Trim();
                            break;
                        case 1://RandomStart
                            m_StrRandomStart = elm.InnerText.Trim();
                            break;
                    }
                    i++;
                }
            }
            catch
            {
                Random R = new Random();
                m_StrLanguage = "1";
                m_StrRandomStart = "" + R.Next(0,65535);
            }
        }
    }
}


MainFrm.Designer.cs 

namespace SYRIS_Mini
{
    partial class MainFrm
    {
        /// 
        /// 設計工具所需的變數。
        /// 
        private System.ComponentModel.IContainer components = null;

        /// 
        /// 清除任何使用中的資源。
        /// 
        /// 如果應該處置 Managed 資源則為 true,否則為 false。
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form 設計工具產生的程式碼

        /// 
        /// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改
        /// 這個方法的內容。
        /// 
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainFrm));
            this.splitContainer1 = new System.Windows.Forms.SplitContainer();
            this.minitrv0001 = new System.Windows.Forms.TreeView();
            this.miniiml0001 = new System.Windows.Forms.ImageList(this.components);
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
            this.splitContainer1.Panel1.SuspendLayout();
            this.splitContainer1.SuspendLayout();
            this.SuspendLayout();
            // 
            // splitContainer1
            // 
            this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.splitContainer1.Location = new System.Drawing.Point(0, 0);
            this.splitContainer1.Margin = new System.Windows.Forms.Padding(5, 5, 5, 5);
            this.splitContainer1.Name = "splitContainer1";
            // 
            // splitContainer1.Panel1
            // 
            this.splitContainer1.Panel1.AutoScroll = true;
            this.splitContainer1.Panel1.Controls.Add(this.minitrv0001);
            // 
            // splitContainer1.Panel2
            // 
            this.splitContainer1.Panel2.AutoScroll = true;
            this.splitContainer1.Size = new System.Drawing.Size(1904, 1012);
            this.splitContainer1.SplitterDistance = 250;
            this.splitContainer1.SplitterWidth = 7;
            this.splitContainer1.TabIndex = 0;
            // 
            // minitrv0001
            // 
            this.minitrv0001.Dock = System.Windows.Forms.DockStyle.Fill;
            this.minitrv0001.ImageIndex = 0;
            this.minitrv0001.ImageList = this.miniiml0001;
            this.minitrv0001.Location = new System.Drawing.Point(0, 0);
            this.minitrv0001.Name = "minitrv0001";
            this.minitrv0001.SelectedImageIndex = 0;
            this.minitrv0001.Size = new System.Drawing.Size(250, 1012);
            this.minitrv0001.TabIndex = 0;
            this.minitrv0001.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.minitrv0001_NodeMouseClick);
            // 
            // miniiml0001
            // 
            this.miniiml0001.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("miniiml0001.ImageStream")));
            this.miniiml0001.TransparentColor = System.Drawing.Color.Transparent;
            this.miniiml0001.Images.SetKeyName(0, "folder.png");
            this.miniiml0001.Images.SetKeyName(1, "list.png");
            this.miniiml0001.Images.SetKeyName(2, "objects.png");
            // 
            // MainFrm
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 20F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(1904, 1012);
            this.Controls.Add(this.splitContainer1);
            this.Font = new System.Drawing.Font("微軟正黑體", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(136)));
            this.Margin = new System.Windows.Forms.Padding(5, 5, 5, 5);
            this.Name = "MainFrm";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "Form1";
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
            this.Load += new System.EventHandler(this.MainFrm_Load);
            this.splitContainer1.Panel1.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
            this.splitContainer1.ResumeLayout(false);
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.SplitContainer splitContainer1;
        private System.Windows.Forms.TreeView minitrv0001;
        private System.Windows.Forms.ImageList miniiml0001;
    }
}

MainFrm.cs 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Lib;

namespace SYRIS_Mini
{
    public partial class MainFrm : Form
    {
        public MainFrm()
        {
            InitializeComponent();
        }

        private void MainFrm_Load(object sender, EventArgs e)
        {
            Language.initVar();
            CreateMenu();
        }

        private void minitrv0001_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)//工作選單事件
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                minitrv0001.SelectedNode = e.Node;
                //判斷點選在第幾層 
                //第二層 
                if (e.Node.Level == 1)
                {
                    MessageBox.Show(minitrv0001.SelectedNode.Text + "->(" + e.Node.Parent.Index + "," + e.Node.Index + ")");
                }
            }
        }
    }
}

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SYRIS_Mini
{
    static class Program
    {
        /// 
        /// 應用程式的主要進入點。
        /// 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainFrm());
        }
    }
}

MainFrm.resx



  
  
    
    
      
        
          
            
              
                
              
              
              
              
              
            
          
          
            
              
              
            
          
          
            
              
                
                
              
              
              
              
              
            
          
          
            
              
                
              
              
            
          
        
      
    
  
  
    text/microsoft-resx
  
  
    2.0
  
  
    System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
  
  
    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
  
  
    17, 17
  
  
    
        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACe
        CQAAAk1TRnQBSQFMAgEBAwEAAQgBAAEIAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
        AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/xIAAf8BeguaAf8BAAEP
        AeoeAAH/DhsB9AEAAf8BegrzAZoB/wEAAQ4B+AHzDQ4QABB6AQAB/wF6A7wH8wGaAf8BAAEOAfgB8gFu
        CxYBRRAAEHoBAAH/AXoBBwHyAe4B8wbyAZoB/wEAAQ4B+AHyAW4LFgFFEAAQegEAAf8BegHyAbwB8Qfz
        AZoB/wEAAQ4B+AHyAW4LFgFFEAAQegEAAf8BegrzAZoB/wEAAQ4B+AHyAW4LFgFFEAAQegEAAf8BegK8
        Ae4H8wGaAf8BAAEOAfgB8gFFC28BRBAAEHoBAAH/AXoBBwHuAQcH8gGaAf8BAAEOAfgB/wX3AvMB8AT3
        Ae8QABB6AQAB/wF6AfIB8QHyB/MBmgH/AQABDgH4AfQB+AfsAfgB8RMAEHoBAAH/AXoK8wGaAf8BAAEO
        AfgB8gFzB3oBdAEHEwAQegEAAf8BegEHAbwBBwfzAZoB/wEAAQ4B+AHyAXMHegF0AQcTAAF6AZoIGgZ6
        AQAB/wF6AQcC7wfyAZoB/wEAAQ4B+AHyAXMHegF0AQcTAAKaBBoE8wEbBXoBAAH/AXoC8wbyAvMBmgH/
        AQABDgH4AfIBcwd6AXQBBxMAARsEegGaBQABGwOaARoBAAH/AXoCGgHsBeoBmQEaAZoB/wEAAQ4B+AHy
        AXMHegF0AQcUAAH1A/QB/wwAAfQC8wHwAfcB7AH4Ae0BBwPzAgABDgH4Af8JBwHzKgABvAHtAf8GAAEP
        ARUeAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAC/wGAAQEBPwH/BAABgAEB
        BgABgAEBBgABgAEBBgABgAEBBgABgAEBBgABgAEBBgABgAEBBgABgAEBAQABBwQAAYABAQEAAQcEAAGA
        AQEBAAEHBAABgAEBAQABBwQAAYABAQEAAQcCAAEDAeABgAEBAQABBwIAAYMB/wHAAQMBAAEHAgAC/wH+
        Aj8B/wIACw==

  

實際執行圖:



熱門推薦

本文由 jashliaoeuwordpress 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦