遍历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;
}
}
}
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));
}
{
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));
}
posted on 2010-11-23 13:13 freeliver54 阅读(1151) 评论(0) 编辑 收藏 举报