首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SelectedIndex of a ComboBox总是-1

SelectedIndex of a ComboBox总是-1
EN

Stack Overflow用户
提问于 2015-05-08 22:13:45
回答 2查看 105关注 0票数 1

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

这是创建ComboBox的方法:

代码语言:javascript
复制
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中的地方:

代码语言:javascript
复制
cb = esrl.GetSize(uri);
cb.SelectedIndexChanged += new System.EventHandler(cb_SelectedIndexChanged);
page.Controls.Add(cb);

这就是我试图获取关于SelectedItem文本的信息的地方,但是索引总是-1。

代码语言:javascript
复制
private void cb_SelectedIndexChanged(object sender, EventArgs e) {
    string attribute = cb.Items[cb.SelectedIndex].ToString();
    MessageBox.Show( " " + attribute);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-09 00:16:45

尝试:

代码语言:javascript
复制
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);
}

这将确保您正在访问事件被触发的同一个组合框。

票数 1
EN

Stack Overflow用户

发布于 2015-05-09 00:01:55

这是因为"cb“不被认为是特定的ComboBox。试着声明

代码语言:javascript
复制
ComboBox cb = new ComboBox();

作为全班的一个领域。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30134376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档