Zi 字媒體
2017-07-25T20:27:27+00:00
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==
實際執行圖:
寫了
5860316篇文章,獲得
23313次喜歡