我创建了一个允许我找到下一个空Box的方法:
public int CheckBox(int boxNum) {
int BoxNumber = 0;
TextBox[] itemBoxArray = new TextBox[] { itemBox0, itemBox1, itemBox2, itemBox3, itemBox4, itemBox5, itemBox6, itemBox7,
itemBox8, itemBox9,itemBox10,itemBox11,itemBox12,itemBox13,itemBox14,itemBox15,};
for (int i = 0; i < itemBoxArray.Length; i++)
{
if (String.IsNullOrEmpty(itemBoxArray[i].Text))
{
BoxNumber = i;
i = 15;
}
}
return BoxNumber;
}
接下来我创建了一个按钮来检查空盒子是什么,我想在这个盒子里输入一些东西,但是我找不到将带有空盒子编号的字符串转换成该文本框的方法:
private void StandAroundRebar_Click(object sender, EventArgs e)
{
int emptybox = CheckBox(0);
string emptyboxString = emptybox.ToString();
string newbox = "itemBox" + emptyboxString;
MessageBox.Show("TextBox # " + newbox + " is empty ");
var textbox = this.Controls.Find(newbox, true);
}
}
}
答案 0 :(得分:5)
好吧,我宁愿改变CheckBox方法
public TextBox CheckBox() {
var itemBoxArray = new TextBox[] { itemBox0, itemBox1, itemBox2, itemBox3, itemBox4, itemBox5, itemBox6, itemBox7,
itemBox8, itemBox9,itemBox10,itemBox11,itemBox12,itemBox13,itemBox14,itemBox15,};
return itemBoxArray.First(m => string.IsNullOrEmpty(m.Text));//or FirstOrDefault
}
现在你会得到一个TextBox,并且可以用它做任何你想做的事。
答案 1 :(得分:1)
你需要这个功能: http://msdn.microsoft.com/de-de/library/486wc64h(v=vs.110).aspx
这将找到它,你所要做的就是施展它。 然后:
BoxNumber = i;
i = 15;
该怎么办?您将i设置为框号,然后再将其设置为15 ?! 这不应该有效。
答案 2 :(得分:1)
为什么不直接返回TextBox
对象?
public TextBox GetNextEmptyTextBox()
{
return (new[] { textBox1, textBox2, textBox3 })
.FirstOrDefault(tb => string.IsNullOrEmpty(tb.Text));
}
答案 3 :(得分:0)
您需要Control.ControlCollection.Find而不是强制转换为TextBox。
TextBox newBox = this.Controls.Find("itemBox1", true).FirstOrDefault() as TextBox;
找到Box后,您可以设置文字:
newBox.Text = "my text";