0

どうか、ここで何が問題なのですか

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";
}
}
4

4 に答える 4

2

コントロールがコンボであり、アイテムのリストを持たずに「Text」プロパティを設定したい場合は、コンボにDropDownStyle = DropDown

于 2012-06-28T14:48:32.347 に答える
1

cをDropDownListにキャストしてみてください

DropDownList ddl =(DropDownList) c;<br/>
ddl.Text ="your text"
于 2012-06-28T14:43:45.870 に答える
1

私があなたを正しく理解しているなら、あなたはコンボボックスに行を追加したいのですが、現在その中にある行を選択するのではありませんよね?これを行うには、ComboboxのText値を文字列に設定せず、次のように新しいComboboxItemをComboboxに追加する必要があります。

c.Items.Add(line);

それ以外の

c.Text = line;

これがうまくいくかどうか教えてください!

編集:わかりました、あなたはコンボボックスの選択されたアイテムを変更しようとしているので、私はただ書くでしょう

c.SelectedItem = line;
于 2012-06-28T14:45:51.000 に答える
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);
    }
}
于 2012-06-28T14:48:18.367 に答える