我有一个创建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);
}
答案 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);
}
这将确保您访问事件被触发的相同组合框。