C#这可能通过While循环和ComboBox值实现吗



我有43个Combox值,我正在尝试循环并写入XML。以下是我看不到的部分代码。

int i = 1;
while (i < 44)
{
string Test = Controls["Track_" + i].Text;
w.WriteElementString("Track_Name", Test);
i++;

我所期望的是从下面的组合框一直到Test_43.text。我不确定我做错了什么,或者我试图做的事情是否可能?

w.WriteElementString("Track_Name", Test_1.Text);
w.WriteElementString("Track_Name", Test_2.Text);
w.WriteElementString("Track_Name", Test_3.Text);
w.WriteElementString("Track_Name", Test_4.Text);

如果使用Controls[]语法,则控件必须直接包含在Form中。如果它们位于不同的容器中(例如Panel(,则找不到它们。

一种更简单的方法是使用CCD_;递归";无论嵌套有多深,都将按名称搜索控件的选项:

for(int i=1; i<=43; i++)
{
ComboBox cb = this.Controls.Find("Test_" + i, true).FirstOrDefault() as ComboBox;
if (cb != null)
{
w.WriteElementString("Track_Name", cb.Text);
}
}

是的,据我所知,它几乎与您所写的完全一样。你使用的是[quot;Track_"+i],而我认为你想要的是基于你发布的最后一位的[quot。

我把这段代码放在测试表单上的一个按钮里(.NET 6.0,如果它很重要的话(;你好"以及";世界;在两行文字上。我的组合框1.Text==";你好"以及组合框2;世界;

string myString = "";
for(int x = 1; x < 3; x++)
{
myString += Controls["comboBox" + x].Text + "n";
}
MessageBox.Show(myString);

你也可以像这样简单一点:

int i = 1;
while (i < 44)
{
w.WriteElementString("Track_Name", Controls["Test_" + i].Text);
i++;
}

相关内容

  • 没有找到相关文章

最新更新