FrmBase.cs 3.8 KB
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;

namespace CodeLibrary
{
    public partial class FrmBase : Form
    {
        public string CurrLanguage = "";
        public string ClassName
        {
            get
            {
                return this.GetType().Name;
            }
            set
            {
            }
        }
        public FrmBase()
        {
            InitializeComponent();
        }
        public void LanguageProcess()
        {
            if (CurrLanguage.Equals(CodeResourceControl.GetLanguage()))
            {
                //return;
            }
            string className = this.ClassName;
            CurrLanguage = CodeResourceControl.GetLanguage();
             string name= CodeResourceControl.GetString(CodeResourceControl.GetTextIdStr(className), this.Text);
            if (!name.Equals("")) { this.Text=name; }
            foreach (Control con in this.Controls)
            {
                if (con is Label || con is Button || con is RadioButton || con is CheckBox)
                {
                    string newStr = CodeResourceControl.GetString(CodeResourceControl.GetTextIdStr(className, con.Name), con.Text);
                    if (!newStr.Equals(""))
                    {
                        con.Text = newStr;
                        con.Tag = newStr;
                    }
                    if (CurrLanguage.Equals(CodeResourceControl.English))
                    {
                        con.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                    }
                    else
                    {
                        con.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                    }
                }
                else if (con.Controls.Count > 0)
                {
                    PreControlLanaguage(con);
                }
            }           
        }
        private void PreControlLanaguage(Control partentControl)
        {
            
            string className = this.ClassName;
            string newStr = CodeResourceControl.GetString(CodeResourceControl.GetTextIdStr(className, partentControl.Name), partentControl.Text);
            if (!newStr.Equals(""))
            {
                partentControl.Text = newStr;
            }
            foreach (Control con in partentControl.Controls)
            {
                if (con is Label || con is Button || con is RadioButton || con is CheckBox)
                {
                      newStr = CodeResourceControl.GetString(CodeResourceControl.GetTextIdStr(className, con.Name), con.Text);
                    if (!newStr.Equals(""))
                    { con.Text = newStr; }
                    if (CurrLanguage.Equals(CodeResourceControl.English))
                    {
                        con.Font  = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                    }
                    else
                    {
                        con.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                    }
                }
                else if (con.Controls.Count > 0)
                {
                    PreControlLanaguage(con);
                }
            }
        }

        private void FrmBase_VisibleChanged(object sender, EventArgs e)
        {
            if (this.Visible.Equals(true))
            {
                CodeResourceControl.LanguageProcess(this, this.GetType().Name);
            }

        }
    }
}