【发布时间】:2012-06-02 00:25:53
【问题描述】:
您好,当我在 Windows 应用程序表单上创建文本框时,我无法将其命名为 box[0]、box[1] 等。我这样做的目的是因为我想循环使用它们。
【问题讨论】:
标签: c# arrays loops textbox naming
您好,当我在 Windows 应用程序表单上创建文本框时,我无法将其命名为 box[0]、box[1] 等。我这样做的目的是因为我想循环使用它们。
【问题讨论】:
标签: c# arrays loops textbox naming
创建它们之后如何列出它们?在您的表单初始化函数中,您可以执行以下操作:
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";
}
【讨论】:
您可以在运行时创建文本框,然后将它们放在一个数组中...
如果您想在设计时执行此操作,则必须对整个 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;
}
【讨论】:
TextBox[] t = new TextBox[10];
for(int i=0;i<required;i++)
{
t[i]=new TextBox();
this.Controls.Add(t[]);
}
【讨论】:
我个人不会为此使用数组。我会使用某种形式的通用集合,比如 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(),或者甚至可能找到其他方法 - 这一切都取决于您在做什么。我只是认为在这种情况下,使用泛型集合比简单数组更灵活。
【讨论】:
其实我发现TextBox[] array = { firstTextBox, secondTextBox };也可以!
【讨论】:
对于C#,只需使用它来创建一个文本框数组
public Text [] "YourName" = new Text ["how long you want the array"];
然后将文本框单独添加到数组中。
【讨论】:
// 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();
}
}
【讨论】: