C# 这可以通过 While 循环和 ComboBox 值实现吗?
C# Is this possible via While loop and ComboBox Values?
我有 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);
是的,据我所知,几乎与您所写的一模一样。您正在使用 ["Track_" + i],而我认为您希望根据您发布的最后一点 ["Test_" + i]。
我将这段代码放在测试表单的按钮中(.NET 6.0,以防万一),它在两个文本行上显示“Hello”和“World”。我的 comboBox1.Text == "Hello" 和 comboBox2.Text == "World"
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++;
}
如果您使用 Controls[]
语法,则控件必须直接包含在表单中。如果它们在不同的容器中,例如 Panel,将找不到它们。
更简单的方法是使用 Controls.Find()
和“递归”选项,无论嵌套有多深,它都会按名称搜索控件:
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);
}
}
我有 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);
是的,据我所知,几乎与您所写的一模一样。您正在使用 ["Track_" + i],而我认为您希望根据您发布的最后一点 ["Test_" + i]。
我将这段代码放在测试表单的按钮中(.NET 6.0,以防万一),它在两个文本行上显示“Hello”和“World”。我的 comboBox1.Text == "Hello" 和 comboBox2.Text == "World"
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++;
}
如果您使用 Controls[]
语法,则控件必须直接包含在表单中。如果它们在不同的容器中,例如 Panel,将找不到它们。
更简单的方法是使用 Controls.Find()
和“递归”选项,无论嵌套有多深,它都会按名称搜索控件:
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);
}
}