C# 更改表单中所有项的文本属性
我的c#表单上有许多按钮和标签。我有一个按钮,可以更改所有Buton和标签的文本属性(更改语言按钮)。我是否必须在按钮的单击事件中写入所有项,或者是否有一种方法可以扫描所有表单控件项并更改其文本属性 还有许多其他控件包含标签或按钮。例如,一个标签被添加到面板的控件中,当我迭代表单控件时,我无法访问该标签。我想一次更改所有项目的文本属性 谢谢。有一个属性包含表单的所有控件。您可以对其进行迭代:C# 更改表单中所有项的文本属性,c#,C#,我的c#表单上有许多按钮和标签。我有一个按钮,可以更改所有Buton和标签的文本属性(更改语言按钮)。我是否必须在按钮的单击事件中写入所有项,或者是否有一种方法可以扫描所有表单控件项并更改其文本属性 还有许多其他控件包含标签或按钮。例如,一个标签被添加到面板的控件中,当我迭代表单控件时,我无法访问该标签。我想一次更改所有项目的文本属性 谢谢。有一个属性包含表单的所有控件。您可以对其进行迭代: foreach(var control in Controls) { var button =
foreach(var control in Controls)
{
var button = control as Button;
if(button != null)
button.Text = Translate(button.Text);
else
{
var label = control as Label;
if(label != null)
label .Text = Translate(label .Text);
}
}
有一个属性包含窗体的所有控件。您可以对其进行迭代:
foreach(var control in Controls)
{
var button = control as Button;
if(button != null)
button.Text = Translate(button.Text);
else
{
var label = control as Label;
if(label != null)
label .Text = Translate(label .Text);
}
}
如果是
winforms
,您应该在此处阅读有关本地化应用程序的内容:
如果是winforms
,您应该在此处阅读有关本地化应用程序的内容:
我认为如果您使用的是javascript,您只需通过DOM修改按钮和标签的文本即可。使用jQuery这将非常简单我认为如果您使用的是javascript,您可以简单地遍历DOM并修改按钮和标签的文本。使用jQuery对于web应用程序来说这将非常简单,使用jQuery可以很容易地做到这一点。看看这个:
对于Winforms,您可以使用以下选项:
foreach (var c in Controls.OfType<TextBox>())
c.Text = "TextBox Text";
foreach (var c in Controls.OfType<Label>())
c.Text = "Label text";
foreach(Controls.OfType()中的var c)
c、 Text=“TextBox Text”;
foreach(Controls.OfType()中的var c)
c、 Text=“标签文本”;
<>但是我同意@ IONDEN,你应该考虑本地化你的应用程序。 对于web应用程序,使用jQuery可以很容易地做到这一点。看看这个:
对于Winforms,您可以使用以下选项:
foreach (var c in Controls.OfType<TextBox>())
c.Text = "TextBox Text";
foreach (var c in Controls.OfType<Label>())
c.Text = "Label text";
foreach(Controls.OfType()中的var c)
c、 Text=“TextBox Text”;
foreach(Controls.OfType()中的var c)
c、 Text=“标签文本”;
<>但是我同意@ IONDEN,你应该考虑本地化你的应用程序。 假设ASP.NET的
(与Winforms控件类似):
这将在实现ITextControl
(如标签或文本框)的每个子控件上应用给定的文本。假设ASP.NET的
(适用于Winforms控件):
这将在实现ITextControl
(如标签或文本框)的每个子控件上应用给定的文本
}
如果发生CS0120错误,请将yourFormName.Controls
更改为this.Controls
foreach( Control ctlparent in this.Controls)
{
if(ctlparent is Panel or ctlparent is GroupBox)
{
foreach(Control ctl in ctlparent.Controls)
{
if(ctl is Label or ctl is Button)
{
ctl.Text= newtext;
}
}}
}
如果发生CS0120错误,请将yourFormName.Controls
更改为this.Controls
foreach( Control ctlparent in this.Controls)
{
if(ctlparent is Panel or ctlparent is GroupBox)
{
foreach(Control ctl in ctlparent.Controls)
{
if(ctl is Label or ctl is Button)
{
ctl.Text= newtext;
}
}}
这会奏效的
这将起作用。我如何迭代?我有一个这样的方法。CsNAddCamButton.Text=SetGUIItemString(guiiteindex.CsNAddCamButton);我正在从xml文件中获取字符串。控件没有文本属性。我应该将其转换为类型吗?如何进行迭代?我有一个这样的方法。CsNAddCamButton.Text=SetGUIItemString(guiiteindex.CsNAddCamButton);我正在从xml文件中获取字符串。控件没有文本属性。我应该把它转换成一个类型吗?你使用什么Gui技术?WinForms、WPF、ASP.NET?另外,通常gui框架和.net也有一些用于本地化的API,所以你不需要自己重新设计。要向刚刚完成应用程序本地化的程序员解释,真正的用户在使用程序时不会更改他们的母语,这是非常困难的。ComponentResourceManager.ApplyResources()方法。您使用什么Gui技术?WinForms、WPF、ASP.NET?另外,通常gui框架和.net也有一些用于本地化的API,所以你不需要自己重新设计。要向刚刚完成应用程序本地化的程序员解释,真正的用户在使用程序时不会更改他们的母语,这是非常困难的。ComponentResourceManager.ApplyResources()方法。这是可行的,但我必须迭代表单中的所有控件,对吗?因为我的一些控件被添加到面板中。我想我必须在面板中迭代控件,等等。你可以这样做。。。首先遍历所有容器控件,如panel group box,并在其中再次为每个控件编写一个“更改”按钮和标签。。这会起作用,但我必须迭代表单中的所有控件,对吗?因为我的一些控件被添加到面板中。我想我必须在面板中迭代控件,等等。你可以这样做。。。首先遍历所有容器控件,如panel group box,并在其中再次为每个控件编写一个“更改”按钮和标签。。这将起作用CS0120:非静态字段、方法或属性“System.Web.UI.Control.Controls.get”需要对象引用CS0120:非静态字段、方法或属性“System.Web.UI.Control.Controls.get”需要对象引用
foreach (Control objCtrl in yourFormName.Controls) {
if (objCtrl is Label)
{
// Assign Some Text
}
if (objCtrl is Button)
{
// Assign some text
}
foreach( Control ctlparent in this.Controls)
{
if(ctlparent is Panel or ctlparent is GroupBox)
{
foreach(Control ctl in ctlparent.Controls)
{
if(ctl is Label or ctl is Button)
{
ctl.Text= newtext;
}
}}