我有10个文本框txt_Address1,txt_Address2 ... txt_Address10和10列,用于将它们的值存储在数据库中,即Address1,Address2 ... Address10。现在我想获取文本框的每个值并将其存储到相应的列中。为此,而不是为每个文本框写10行代码,我想通过FOR循环来做。任何人都可以向我推荐合适的解决方案吗?
答案 0 :(得分:1)
创建文本框时,请将它们存储在集合
中List<TextBox> textboxControls = new List<TextBox>();
然后在创建它们时,将它们添加到集合
textboxControls.Add(control);
然后你可以遍历它们并访问它们的值
foreach(var control in textboxControls )
DoSomethingWithText(control.Text);
答案 1 :(得分:0)
只需在TextBox数组中引用文本框;
TextBox txt1 = new TextBox();
TextBox txt2 = new TextBox();
TextBox txt3 = new TextBox();
TextBox txtN = new TextBox();
TextBox[] allTextBoxes = new TextBox[] { txt1, txt2, txt3, txtN };
foreach(TextBox item in allTextBoxes)
{
StoreValue(item.Text);
}
或者你可以使用
List<TextBox> lst = new List<TextBox>();
lst.Add(txt1);
lst.Add(txt2);
lst.Add(txt3);
foreach(TextBox item in lst)
{
StoreValue(item.Text);
}
答案 2 :(得分:0)
你可以把它们放在一个列表中,然后遍历那个列表......
编辑:似乎lostincomputer在我前面20秒回答... 同样......两者都会起作用
答案 3 :(得分:0)
或者您可以从没有列表的表单中访问它们:
foreach(Control control in MyForm.Controls)
{
if(control is TextBox)
{
//do what you want
}
}
或者如果你在groupBox中有它们
foreach(Control control in myGroupBox.Controls)
{
if(control is TextBox)
{
//do what you want
}
}
希望这有帮助!
或使用FOR循环:
//Controls is the Controls collection of the form
for(int i=0;i<Controls.Count;i++)
{
if(Controls[i] is TextBox)
{
//do what you want
}
}
答案 4 :(得分:0)
在花费(浪费)时间编写代码来为这样设计的数据库工作之前,您应该重新设计数据库。在10个地址的表中有10列不是一个好主意。您应该能够拥有0 - 无穷大地址。查看如何建立关系数据库。
基本上:
表:客户
CustomerID
Name
Etc.
表:CustomerAddresses
CustomerID
Address
City
State
Zip
答案 5 :(得分:0)
第1步:
您可以浏览所有Form
控件,只考虑TextBox
控件。
TextBox
控件的 第2步:将包含Name
的TextBox过滤为“txt_Address%
”此处%
可以像1一样,2,3,4 ...等,
代码如下:
List<String> txtValues=new List<string>();
foreach (var control in this.Controls)
{
if((control is TextBox) && (((TextBox) control).Name.Contains("txt_Address")))
txtValues.Add(((TextBox) control).Text.ToString());
}
答案 6 :(得分:0)
您可以像这样使用Controls.Find():
for (int i = 1; i <= 10; i++)
{
Control[] matches = this.Controls.Find("txt_Address" + i.ToString(), true);
if (matches.Length > 0 && matches[0] is TextBox)
{
TextBox tb = (TextBox)matches[0];
// ... do something with "tb" ...
}
}
答案 7 :(得分:0)
var columns = new Dictionary<string, string>();
for (int i = 1; i <= 10; i++) columns.Add("Address" + i, string.Empty);
var textBoxes = Controls.Find("txt_Address", true).Where(t => t is TextBox).ToList();
columns.ToList().ForEach(c =>
{
var index = c.Key.Replace("Address", string.Empty);
var textBox = textBoxes.FirstOrDefault(t => index.Equals(t.Name.Replace("txt_Address", string.Empty)));
if (textBox != null) columns[c.Key] = textBox.Text;
});