我需要就我面临的问题提出一些建议或想法。
我想从输入字符串动态创建文本框,例如' 11211'。
当它根据上面的字符串读取第一个字符时,在这种情况下' 1',将创建一个背景色为黄色的文本框。
循环将继续水平创建文本框,直到读完上面字符串中的所有字符。
代码片段如下: -
foreach (XmlNode xn in list1)
{
string name = xn["BinCode"].InnerText;
disGood.Text = name;
string input = name;
disOccupied.Text = input.Length.ToString();
char[] b = name.ToCharArray();
foreach (char c in b)
{
TextBox[] theTextBoxes = new TextBox[1];
for (int i = 0; i < theTextBoxes.Length; i++)
{
theTextBoxes[i] = new TextBox();
if (c.ToString() == "1")
{
theTextBoxes[i].BackColor = Color.Yellow;
}
}
disGood.Text = c.ToString();
}
}
强烈建议使用一些样本或想法。
谢谢。
答案 0 :(得分:1)
我看到很多裁员。例如:您的文本框数组无用,因为您在每次迭代期间始终创建一个文本框。对额外变量input
和b
的赋值是额外的,但是不需要的操作。试试这个:
foreach (XmlNode xn in list1)
{
string name = xn["BinCode"].InnerText;
disGood.Text = name;
disOccupied.Text = name.Length.ToString();
foreach (char c in name) // You can iterate through a string.
{
TextBox theTextBox = new TextBox();
if (c == '1') // Compare characters.
{
theTextBox.BackColor = Color.Yellow;
}
Controls.Add(theTextBox); // Add the textbox to the controls collection of this parent control.
disGood.Text = c.ToString(); // This will only show the last charachter. Is this as needed?
}
}
答案 1 :(得分:0)
要水平动态创建和显示文本框,请使用以下代码:
TextBox t = new TextBox()
{
//To display textbox horizontally use the TableLayoutPanel object
TableLayoutPanel(TextBox, Column, Row);
//add any properties specs,
//more property specs,
};