2015-05-08 3 views
1

У меня есть метод создания ComboBox, а на SelectedIndexChanged мне нужен текст , поэтому я мог бы использовать другой метод, но SelectedIndex всегда равен -1, независимо от того, что выбрано. Я новичок в C#, поэтому я действительно не понимаю, в чем проблема.SelectedIndex из ComboBox всегда -1

Это метод, в котором создается 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); 
} 

ответ

1

Try:

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); 
} 

Это убедитесь, что вы получаете доступ к той же выпадающий, для которых событие уволили.

+0

Большое спасибо, он работает. – schadenfreude

+0

Если это вам помогло, отметьте это как ответ. благодаря –

1

Это потому, что «cb» не распознается как этот особый ComboBox. Попробуйте объявить

ComboBox cb = new ComboBox(); 

как поле для всего класса.

Смежные вопросы