拜托,这里有什么问题
abc = labGuns.Text; // multiline label
string[] arr = Regex.Split(abc, "\r\n");
x = 0;
foreach (string line in arr)
{
MessageBox.Show(line); //works fine - shows each line of label
x = x + 1;
string abc = "cbGuns" + x.ToString();
MessageBox.Show(abc); //works fine - shows "cbGuns1", "cbGuns2"...
foreach (Control c in panPrev.Controls)
{
if (c.Name == abc) // five combos named cbGuns1, cbGuns2...
{
c.Text = line; //doesn't work. No combo changes its text
}
}
}
如果我将最后一行更改为 - c.Text = "323"
- 也没有任何反应
所以,错误显然是在代码末尾附近。
此代码也有效(作为测试):
foreach (Control c in panPrev.Controls)
{
if (c.Name == "cbGuns1")
{
c.Text = "323";
}
}
答案 0 :(得分:2)
如果你的控件是组合的,并且你想设置'Text'属性而没有项目列表,那么你的组合应该有DropDownStyle = DropDown
答案 1 :(得分:1)
尝试将c转换为DropDownList
DropDownList ddl =(DropDownList) c;<br/>
ddl.Text ="your text"
答案 2 :(得分:1)
如果我理解正确,你想在Combobox上添加一行,而不是选择当前的一行,对吗?为此,您不要将Combobox的Text值设置为字符串,您需要将新的ComboboxItem添加到Combobox中,如下所示:
c.Items.Add(line);
而不是
c.Text = line;
让我知道这是否有效!
编辑: 好的,既然您正在尝试更改Combobox的所选项目,我只想写
c.SelectedItem = line;
答案 3 :(得分:1)
尝试将c.Text = line;
替换为c.Items.Add(line);
。
AddRange
是首选,因此请尝试以下操作代替foreach
循环:
foreach (Control c in panPrev.Controls)
{
if (c.Name.StartsWith("cbGuns"))
{
c.Items.AddRange(arr);
}
}