我有一个创建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);
}发布于 2015-05-09 00:16:45
尝试:
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);
}这将确保您正在访问事件被触发的同一个组合框。
发布于 2015-05-09 00:01:55
这是因为"cb“不被认为是特定的ComboBox。试着声明
ComboBox cb = new ComboBox();作为全班的一个领域。
https://stackoverflow.com/questions/30134376
复制相似问题