zoukankan      html  css  js  c++  java
  • 遍历WinForm窗体 根据语言类型设置其控件Text显示

    示例内容:

    Form1 中 有一个Label1
        中文时显示 " 姓名:"
        英文时显示 " Name: "
        开发时 默认显示为 " Name: "
        有一个弹出的提示信息MessageBox.Show

    中文时语言文件的内容:
    Name:===姓名:
    Home Address: ===家庭地址:


    1、语言文件读取并设置控件Text显示的 处理类

    代码
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    using System.IO;
    using System.Windows.Forms;

    namespace LngTxtReader
    {
        
    public class LngTxtReader
        {

            
    public Hashtable SetTextByLng(System.Windows.Forms.Form winform, string strLngTxtPath)
            {
                Hashtable ht 
    = new Hashtable();
                
    if (winform == null)
                {
                    
    return ht;
                }

                
    if (File.Exists(strLngTxtPath))
                {
                    
                    
    string strlineContent;
                    
    int iIndex;

                    System.IO.StreamReader file 
    = new System.IO.StreamReader(strLngTxtPath);
                    
                    
    while ((strlineContent = file.ReadLine()) != null)
                    {
                        iIndex 
    = strlineContent.IndexOf("===");//语言文件的字串 以===区隔 key 和 value
                        ht.Add(strlineContent.Substring(0, iIndex).Trim(), strlineContent.Substring(iIndex + 3, strlineContent.Length - iIndex - 3).Trim());
                    }

                    
    if (ht.Count > 0)
                    {
                        winform.Text 
    = GetMsgByLng( winform.Text, ht);
                        fn_FindControl(winform.Controls, ht);
                    }
                }

                
    return ht;
            }

            
    private void fn_FindControl(Control.ControlCollection ctls,Hashtable ht)
            {
                
    foreach (Control ctl in ctls)
                {
                    
    if (ht.Contains(ctl.Text.Trim()))
                    {
                        ctl.Text 
    = ht[ctl.Text.Trim()].ToString();
                    }
                    
    if (ctl.HasChildren)
                    {
                        fn_FindControl(ctl.Controls,ht);
                    }
                }
            }

            
    public string GetMsgByLng(string strMsg, Hashtable ht)
            {
                
    string strMsgWithLng = strMsg.Trim();
                
    if (ht.Contains(strMsg.Trim()))
                {
                    strMsgWithLng 
    = ht[strMsg.Trim()].ToString();
                }
                
    return strMsgWithLng;
            }
        }
       
    }

    2、调用上述处理

    代码
       public Form1()
       {
            InitializeComponent();
            
    #region 语言显示
            
    string currDirPath = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).Directory.FullName;
            
    string strFilePath = currDirPath + "\\PassChcek_Lng1033.txt";
            LngTxtReader.LngTxtReader lngReader 
    = LngTxtReader.LngTxtReader();
            ht 
    = lngReader.SetTextByLng(this,strFilePath);
            
    #endregion
        }

        
    private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(
    new Xys.Comm.LngTxtReader.LngTxtReader().GetMsgByLng("Hello world",ht));
        }
  • 相关阅读:
    37.Spring-事务控制.md
    35.Spring-jdbc支持.md
    29.Hibernate-二级缓存和session管理.md
    28.Hibernate-HQL查询.md
    27.Hibernate-缓存和懒加载.md
    26.Hibernate-主键和映射.md
    25.Hibernate-配置文件.md
    24.Hibernate-各种类型的查询.md
    MarkDown学习记录
    gitbook使用
  • 原文地址:https://www.cnblogs.com/freeliver54/p/1885333.html
Copyright © 2011-2022 走看看