我有10个文本框。像textBox1.Text
,textBox2.Text
等。我需要使用textBox2.Text if i=2
,textBox2.Text if i =3
等。 我所做的:如何使用int i选择文本框NR
string t = "textBox"+i+".Text";
但结果来为 “textBox1.Text”。 如何将'i'值插入到文本框名称中而不是1.然后将结果作为textBox1.Text 因此,我可以将其用作名称并将值从文本框传递到我的程序。
我有10个文本框。像textBox1.Text
,textBox2.Text
等。我需要使用textBox2.Text if i=2
,textBox2.Text if i =3
等。 我所做的:如何使用int i选择文本框NR
string t = "textBox"+i+".Text";
但结果来为 “textBox1.Text”。 如何将'i'值插入到文本框名称中而不是1.然后将结果作为textBox1.Text 因此,我可以将其用作名称并将值从文本框传递到我的程序。
根据我的想法,您可以将每个TextBox
的引用存储在一个数组中,然后使用您的int
来引用它。
TextBox[] boxes = new TextBox[10];
boxes[0] = textBox1;
// ... follow the pattern
boxes[9] = textBox10;
string value = boxes[i-1].Text; // Gets the value of the textBoxi.Text
我无法将textBox1.Text放入数组中。我收到一条消息:无法隐式转换类型'字符串'到'System.Windows.Forms.TextBox' –
不知道我在做什么错误 –
@RaimondasLukosius - 看看我写的代码示例。您不要将'textBox1.Text'放入数组中,只需将'textBox1'放入数组中。然后当你需要文本时,你可以通过调用'boxes [i-1] .Text'来获得文本。# – pstrjds
你能做到像这样:
private TextBox GetTB(int i) {
string name = "textBox" + i.ToString();
foreach (var ctrl in Controls) {
var tbox = ctrl as TextBox;
if (tbox?.Name == name) return tbox;
}
return null
}
它不只是textBox +我的文本框+ 1 + .Text –
该方法只是获取您需要的文本框。所以你使用它像'var tb = GetTB(2)?Text;' – dcg
我需要插入我在textBox和.Text之间 –
最简单的方法,如果你需要这种方式访问他们在C#代码,将维持一个数组或这些文本框的List
,索引按照它们的数值的顺序。然后你可以简单地引用textBoxes[i-1]
并获得编号为“i”的文本框。你如何得到这个数组取决于你正在开发的内容。对于的WinForms,你可以在Form.Controls财产使用少许的Linq:
public static IEnumerable<Control> Flatten(this IEnumerable<Control> controls)
{
var results = new List<Control>();
foreach (var control in controls)
{
results.Add(control);
control.Controls.OfType<Control>().Flatten(results);
}
return results;
}
private static void Flatten(this IEnumerable<Control> controls, List<Control> results)
{
foreach (var control in controls)
{
results.Add(control);
control.Controls.OfType<Control>().Flatten(results);
}
}
...
var textboxes = Form.Controls.Flatten()
.OfType<TextBox>()
.Where(t=>t.Name.StartsWith("textBox"))
.OrderBy(t=>t.Name)
.ToArray();
感谢您的帮助我刚刚使用数组运行良好 –
这是一个Web应用程序(Web窗体,MVC等)或桌面应用程序(的WinForms,WPF等)。两者都有“TextBox”控件,但是根据你在哪个世界开发,答案是非常不同的。 – KeithS
*如果i = 2,我需要使用textBox2.Text。 textBox2.Text如果我= 3等。*咦? –
其winForm应用程序 –