C# 组合框的SelectedIndex始终为-1

C# 组合框的SelectedIndex始终为-1,c#,C#,我有一个创建组合框的方法,在SelectedIndexChanged上我需要文本 所以我可以使用另一种方法,但是SelectedIndex总是-1,无论选择什么。我是C#的新手,所以我真的不明白问题出在哪里 ComboBox cb = new ComboBox(); 这是创建组合框的方法: public ComboBox GetSize(string uri) { xmlReader = GetXmlReader(uri + "/People"); ComboBox cb = ne

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

ComboBox cb = new 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;
}
ComboBox cb = new ComboBox();
这是将其添加到选项卡控件的位置:

cb = esrl.GetSize(uri);
cb.SelectedIndexChanged += new System.EventHandler(cb_SelectedIndexChanged);
page.Controls.Add(cb);
ComboBox cb = new ComboBox();
这就是我试图获取SelectedItem文本信息的地方,但是索引总是-1

private void cb_SelectedIndexChanged(object sender, EventArgs e) {
    string attribute = cb.Items[cb.SelectedIndex].ToString();
    MessageBox.Show( " " + attribute);
}
ComboBox cb = new ComboBox();
这是因为“cb”不能被识别为这个特殊的组合框。申报

ComboBox cb = new ComboBox();
作为全班的一个字段。

尝试:

ComboBox cb = new ComboBox();
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);
}

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

如果这对您有所帮助,请将其标记为答案。谢谢
ComboBox cb = new ComboBox();