示例内容:

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

转载于:https://www.cnblogs.com/freeliver54/archive/2010/11/23/1885333.html

遍历WinForm窗体 根据语言类型设置其控件Text显示相关推荐

  1. PyQt5 图形界面 - 配置界面跟随窗口大小调整灵活伸缩,设置页面控件居中显示实例演示

    PyQt5 图形界面 - 配置页面跟随窗口大小调整灵活伸缩 第一章:Qt 窗口布局调整演示 ① 不可自由伸缩实例 ② 分散布局合并 ③ 添加间隔控件 ④ 添加栅格布局 ⑤ 修改栅格布局为 QFrame ...

  2. (ESC IIS笔记)类型“TextBox”的控件“TextBox1”必须放在具有 runat=server 的窗体标记内

    问题出现 在VisualStudio创建Web窗体并对页面内容进行删改时,出现这样的问题 "类型"TextBox"的控件"TextBox1"必须放在具 ...

  3. 类型“RadioButton”的控件“radTitle”必须放在具有 runat=server 的窗体标记内。

    刚开始做东西,就遇到了一个小问题,类型"RadioButton"的控件"radTitle"必须放在具有 runat=server 的窗体标记内,查了下解决起来还 ...

  4. 类型“DropDownList”的控件“ContentPlaceHolder1_ddlDepartment”必须放在具有 runat=server 的窗体标记内。

    小编今天在开发时运行出现报错黄页,图中提示信息为"类型"DropDownList"的控件"ContentPlaceHolder1_ddlDepartment&q ...

  5. 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内

    抛出异常:类型"GridView"的控件"GridView1"必须放在具有 runat=server 的窗体标记内 我个人的理解为:添加的GridView空间未 ...

  6. 类型“TextBox”的控件“email”必须放在具有 runat=server 的窗体标记内。

    类型"TextBox"的控件"email"必须放在具有   runat=server   的窗体标记内.        说明:   执行当前   Web   请 ...

  7. C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上...

    转:/********************** * 课题:将窗体中鼠标所在控件名显示在窗体标题上  * 作者:ZAXX  * QQ : 94027486  * 本课题可简单扩展:获取屏幕上鼠标所在 ...

  8. C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面...

    个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...

  9. C#WinForm判断界面上多个TextBox控件的值是否为空

    说明:当WinForm界面上面有多个控件需要判断是否为空,如果用if(){}else,难免有些繁琐.在参考了其他博主的资料以后,我这里也做了一些整理,以TextBox控件示例,如下. VS打开创建一个 ...

最新文章

  1. 华为LINUX转换NTFS格式,linux中生成考核用的NTFS文件系统结构样例(一)
  2. 如何 更换vue的图标_vue如何实现图标点击选中后换一个图标(只单选)
  3. Chrome无法播放m3u8格式的直播视频流的问题解决
  4. javascript option 菜单图标_苹果电脑上神奇的Option键 巧用option键提升效率
  5. 【Python】一种pyahocorasick库安装方法
  6. 组成原理---补码加减法,原码一两位乘法,补码一两位乘法,754标准
  7. 小D课堂 - 新版本微服务springcloud+Docker教程_5-03 feign结合hystrix断路器开发实战上...
  8. 计算机网络零碎笔记:IP协议(一)
  9. python读取txt文件数据并存到list中
  10. 创建SSM项目框架搭建流程--史上最详细教程
  11. Java调用阿里云对象存储OSS
  12. 初探802.11协议(0)——开篇(IEEE802.11历史与Wi-Fi速率计算)
  13. 如何用PPT做一张高大上的照片
  14. Android开发之黑科技安装APP无启动图标
  15. js解决键盘长按输入时会有停顿的问题
  16. 第四周:基于图像相似度比较的分镜头
  17. 网易严选如何打造数仓规范和评价体系
  18. 用.bat文件多开微信及打开固定浏览器浏览固定页面 开机自启
  19. 在线查看.doc,.docx,.ofd,.PDF,.WPS以及Office文档的在线解析方式。
  20. 六、Quartz-配置详解

热门文章

  1. python locust api_干货 | 基于Locust的接口压测
  2. python使用pkg包_Python deb-pkg-tools包_程序模块 - PyPI - Python中文网
  3. 没有icon_ICON设计干货来啦~
  4. 人人开源 VUE项目报错./src/assets/scss/index.scssModule build failed: Error: ENOENT: no such file or direct
  5. java从键盘输入一个数,并将其倒序输出
  6. c语言中陶陶摘苹果while,洛谷 P1478 陶陶摘苹果(升级版) C语言实现
  7. 苹果cms10自适应模板_哪里有苹果cms10自适应模板?
  8. MySql 查询显示
  9. 无法检查指定的位置是否位于cfs上_打印机知识普及:七大原因导致的打印机无法打印及解决方法...
  10. 四川大学计算机学硕分数线,川大计算机考研分数线