FrmBase.cs 4.5 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.AutoInOutStore
{
    public partial class FrmBase : Form
    {
        public string CurrLanguage = "";
        public string ClassName
        {
            get
            {
                return this.GetType().Name;
            }
            set
            {
            }
        }
        public static string GetVersion()
        {
            string str = "";
            string version = "";
            DateTime newData = DateTime.Parse("2000-01-01");
            try
            {
                version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
                string[] strArray = version.Split('.');
                if (strArray.Length.Equals(4))
                {
                    int days = Convert.ToInt32(strArray[2]);
                    int seconds = Convert.ToInt32(strArray[3]);
                    DateTime d1 = DateTime.Parse("2000-01-01");
                    newData = d1.AddDays(days);
                    newData = newData.AddSeconds(seconds * 2);
                    str = newData.ToString("yyyy-MM-dd HH:mm:ss");
                }
            }
            catch (Exception ex)
            {
                str = version;
                LogUtil.error("解析版本号【" + str + "】出错:" + ex.ToString());
            }
            LogUtil.info("版本号[" + version + "][" + str + "][" + GetCodeNum() + "]");
            return str;
        }
        internal static string GetCodeNum(string codeName = "RC1252-AutoInOutStore-N")
        {
            byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(codeName);
            string result = "";
            result = AcSerialBean.ByteToString(byteArray);
            return result;
        }
        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();
            }
            FormLanPro();

        }
        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);
                }
            }
        }

        protected virtual void FormLanPro()
        {

        }

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