ComboBox的SelectedIndex始终为-1

时间:2015-05-08 22:13:45

标签: c#

我有一个创建ComboBox的方法,而在SelectedIndexChanged上我需要文本 所以我可以使用另一种方法,但无论选择什么,SelectedIndex总是-1。我是C#的新手,所以我真的不明白问题是什么。

这是创建ComboBox的方法:

public ComboBox GetSize(string uri) {
   xmlReader = GetXmlReader(uri + "/People");
   ComboBox cb = new ComboBox();
   while (xmlReader.ReadToFollowing("site")) {
       cb.Items.Add(xmlReader.GetAttribute(0));
   }
   return cb;
}

这是它添加到TabControl的地方:

cb = esrl.GetSize(uri);
cb.SelectedIndexChanged += new System.EventHandler(cb_SelectedIndexChanged);
page.Controls.Add(cb);

这是我尝试获取有关SelectedItem文本的信息的地方,但索引始终为-1。

private void cb_SelectedIndexChanged(object sender, EventArgs e) {
    string attribute = cb.Items[cb.SelectedIndex].ToString();
    MessageBox.Show( " " + attribute);
}

2 个答案:

答案 0 :(得分:1)

这是因为" cb"不被认为是这个特殊的ComboBox。尝试声明

ComboBox cb = new ComboBox();

作为全班的一个领域。

答案 1 :(得分:1)

尝试:

private void cb_SelectedIndexChanged(object sender, EventArgs e) {
    ComboBox c = sender as ComboBox;
    if(c == null) return;

    string attribute = c.Items[c.SelectedIndex].ToString();
    MessageBox.Show( " " + attribute);
}

这将确保您访问事件被触发的相同组合框。