如何使用一个循环,循环每一个控件,我是要做多语言版本,要循环所有的控件,逐个更改控件text。
foreach (Control item in this.Controls)
{
if (Values[item.Name] != null)
item.Text = Values[item.Name].ToString();
}
//values是读取到配置文件ini的Hashtable key是控件name,value是控件text值这样写,访问不到控件
另外我又这样写,还是获取不到控件。
foreach (DictionaryEntry item in Values)
{
if (this.Controls[item.Key.ToString()] != null)
this.Controls[item.Key.ToString()].Text = item.Value.ToString();
}另外请问一下 桌面应用程序做多语言版本还有其他好的方式吗?
foreach (Control item in this.Controls)
{
if (Values[item.Name] != null)
item.Text = Values[item.Name].ToString();
}
//values是读取到配置文件ini的Hashtable key是控件name,value是控件text值这样写,访问不到控件
另外我又这样写,还是获取不到控件。
foreach (DictionaryEntry item in Values)
{
if (this.Controls[item.Key.ToString()] != null)
this.Controls[item.Key.ToString()].Text = item.Value.ToString();
}另外请问一下 桌面应用程序做多语言版本还有其他好的方式吗?
http://www.cnblogs.com/sharemeteor/articles/215069.html
foreach (Control item in this.Controls)
{
try
{
TextBox t = (TextBox)item;
//是TextBox控件,做你后面的
}
catch
{
//不是TextBox控件 自己看着办
}
}
不是的啦,连控件都访问不到啦,如果能够访问到控件,我直接更改text就好了嘛。关键是Controls循环,好像就几个子控件,并不是界面上全部的控件的。
{
if(ct is TextBox )
{
((TextBox)ct).text=Values[((TextBox)ct).Name].ToString();
}
}
http://www.microsoft.com/china/MSDN/library/netFramework/netframework/intronetfx30.mspx?mfr=true
{
if(item is TabControl)
{
foreach (Control item_sub in item.Controls)
{
item_sub.Text = "tab动态修改";
foreach (Control item_sub2 in item_sub.Controls)
item_sub2.Text = "tab子控件动态修改"; }
}
else
item.Text = "动态修改";
}
{
for (int i = 0; i < con.Count; i++)
{
if (con[i] is TextBox)
((TextBox)con[i]).Text = "123";
if (con[i].HasControls())
findcontrol(con[i].Controls);
}
}
感觉用resx文件实现的多语言比较简单项目的Properties下创建几个resx文件,对应多语言,控件的name作为key,value就是要显示的内容就可以了。也不需要读取文件的操作,比较简单。 public void InitFormLanguse(List<Control> iControls, string lag_flg)
{
if (iControls.Count > 0)
{
foreach (Control ct in iControls)
{ if (Constant.LAG_CN.Equals(lag_flg))
{
ct.Text = Properties.CN_Resources.ResourceManager.GetString(ct.Name.ToString());
}
else if (Constant.LAG_EN.Equals(lag_flg))
{
ct.Text = Properties.EN_Resources.ResourceManager.GetString(ct.Name.ToString());
}
else
{
ct.Text = Properties.JP_Resources.ResourceManager.GetString(ct.Name.ToString());
}
}
}
}
{
foreach (Control c in parCtl.Controls)
{
if (c is TextBox)
c.Text = "aa";
SetControlValue(c);
}
}