FrmBase.cs 3.0 KB
using OnlineStore.Common;
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;

namespace OnlineStore.ACSingleStore
{
    public partial class FrmBase : Form
    {
        public string CurrLanguage = "";
        public string ClassName
        {
            get
            {
                return this.GetType().Name;
            }
            set
            {
            }
        }
        public FrmBase()
        {
            InitializeComponent();
            //skinEngine1.SkinAllForm = false;
        }
        public void SetSkin(FrmBase preCon)
        { 
            //skinEngine1.SkinFile = FormManager.SkinFileName;
            //LogUtil.info("当前皮肤:" + skinEngine1.SkinFile);
        }
        public void LanguageProcess()
        {
            if (CurrLanguage.Equals(ResourceCulture.CurrLanguage))
            {
                return;
            }
            string className = this.ClassName;
            CurrLanguage = ResourceCulture.CurrLanguage;
            this.Text = ResourceCulture.GetString(ResourceCulture.GetTextIdStr(className), this.Text);

            foreach (Control con in this.Controls)
            {
                if (con is Label || con is Button || con is RadioButton || con is CheckBox )
                {
                    string newStr = ResourceCulture.GetString(ResourceCulture.GetTextIdStr(className, con.Name), con.Text);
                    con.Text = newStr;
                    con.Tag = newStr;

                }
                else if (con.Controls.Count > 0)
                {
                    PreControlLanaguage(con);
                }

            }
           if(this is FrmStoreBox)
            {
                ((FrmStoreBox)this).processMenu();
            }
         
        }
        private void PreControlLanaguage(Control partentControl)
        {
            if(partentControl is UserFromControl.IOTextControl && this is FrmIOStatus)
            {
                return;
            }
            string className = this.ClassName;
            partentControl.Text = ResourceCulture.GetString(ResourceCulture.GetTextIdStr(className, partentControl.Name), partentControl.Text);
            foreach (Control con in partentControl.Controls)
            {
                if (con is Label || con is Button || con is RadioButton || con is CheckBox)
                {
                    string newStr = ResourceCulture.GetString(ResourceCulture.GetTextIdStr(className, con.Name), con.Text);
                    con.Text = newStr;
                   
                }
                else if (con.Controls.Count > 0)
                {
                    PreControlLanaguage(con);
                }
            }
        }

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