当我在Windows Application Form上创建文本框时,我无法将其命名为box [0],box [1]等。我想这样做的目的是因为我想在循环中使用它们。
答案 0 :(得分:7)
创建它们后如何制作它们列表?在表单初始化函数中,您可以执行以下操作:
List<TextBox> myTextboxList = new List<TextBox>();
myTextBoxList.Add(TextBox1);
myTextBoxList.Add(TextBox2);
mytextBoxList.Add(TextBox3);
现在,您可以使用下面的“myTextboxList”进行搜索:
Foreach (TextBox singleItem in myTextboxList) {
// Do something to your textboxes here, for example:
singleItem.Text = "Type in Entry Here";
}
答案 1 :(得分:5)
实际上我发现TextBox[] array = { firstTextBox, secondTextBox };
也有效!
答案 2 :(得分:1)
您可以在运行时创建文本框,只需将它们放在一个数组中......
如果您想在设计时执行此操作,则必须在整个this.Controls
数组上执行一些控制过滤逻辑,以便仅访问所需的文本框。如果表单中的所有文本框都是数组中所需的文本框,请考虑if (currControl is TextBox)
。
设计时的另一个选择是将所有想要的文本框放在一个面板中,这个面板将成为它们的父项,然后迭代面板的子项(控件)并将它们转换为TextBox。
运行时解决方案类似于:
var arr = new TextBox[10];
for (var i = 0; i < 10; i++)
{
var tbox = new TextBox();
// tbox.Text = i.ToString();
// Other properties sets for tbox
this.Controls.Add(tbox);
arr[i] = tbox;
}
答案 3 :(得分:0)
我个人不会为此使用数组。我会使用某种形式的通用集合,比如List。
List<TextBox> textBoxList = new List<TextBox>();
//Example insert method
public void InsertTextBox(TextBox tb)
{
textBoxList.Add(tb);
}
//Example contains method
public bool CheckIfTextBoxExists(TextBox tb)
{
if (textBoxList.Contains(tb))
return true;
else
return false;
}
你不一定要使用Contains方法,你也可以使用Any(),或者甚至可以找到另一种方式 - 所有这些都取决于你正在做什么。我只是认为在这种情况下使用泛型集合比简单数组更具灵活性。
答案 4 :(得分:0)
for C#
只需使用它来创建一个文本框数组
public Text [] "YourName" = new Text ["how long you want the array"];
然后单独将文本框添加到数组中。
答案 5 :(得分:0)
// Declaring array of TextBox
private System.Windows.Forms.TextBox[] txtArray;
private void AddControls(int cNumber)
{
// assign number of controls
txtArray = new System.Windows.Forms.TextBox[cNumber + 1];
for (int i = 0; i < cNumber + 1; i++)
{
// Initialize one variable
txtArray[i] = new System.Windows.Forms.TextBox();
}
}
答案 6 :(得分:-1)
TextBox[] t = new TextBox[10];
for(int i=0;i<required;i++)
{
t[i]=new TextBox();
this.Controls.Add(t[]);
}