从动态生成的文本框中获取值到XML
本文关键字:获取 XML 文本 动态 | 更新日期: 2023-09-27 18:18:32
我动态添加了89个文本框。我想让文本框的值为xml。我可以添加文本框很好问题是我不能动态地获得这些值添加文本框。
例如,我想获得值从textBox1到节点"F1"在XML,从textBox2到节点"F2"在XML。
private void button1_Click(object sender, EventArgs e)
{
XmlNodeList xnList;
XmlDocument doc = new XmlDocument();
string dosyayolu = Application.StartupPath + "''coupling.xml";
doc.Load(dosyayolu);
if (globaller.hangimenu == "TWT1")
{
xnList = doc.SelectNodes("/coup/TWT1");
}
else
{
xnList = doc.SelectNodes("/coup/TWT2");
}
for (int i = 0; i < 89; i++)
{
foreach (XmlNode xn in xnList)
{
xn["F" + (i + 1).ToString()].InnerText = "k";
// xn["F1"].InnerText = textBox1.Text;
}
}
doc.Save(dosyayolu);
}
您可以使用扩展名ChildrenOfType<T>()
。假设grid
是所有文本框的父级…
var textBoxes= grid.ChildrenOfType<TextBox>().ToArray();
for (int i = 0; i < 89; i++)
{
foreach (XmlNode xn in xnList)
{
xn["F" + (i + 1).ToString()].InnerText = "k";
xn["F1"].InnerText = textBoxes[ i ].Text;
}
}
我猜你的文本框的名称是textBox1, textBox2, ....另外,你的xml节点从F1开始,而不是F2,所以我改变了For循环位
for (int i = 1; i < 90; i++)
{
foreach (XmlNode xn in xnList)
{
// this if textboxes on form, yourUserControlName if it is under a usercontrol
var tb = (TextBox)this.Controls["textBox" + i];
xn["F" + i].InnerText = tb.Text;
}
}
为支持Hassan Nisar的评论而编辑
你可以这样做:
//create
StackPanel sp = new StackPanel();
for(int i=0;i<89;i++)
{
TextBox tb = new TextBox();
sp.Children.Add(tb);
}
//get
foreach(TextBox tb in sp.Children)
{
}
或者您可以将所有文本框添加到列表中,并通过索引