2016-08-26 4 views
0

Простой случай, ComboBox1 отображает список элементов, когда пользователь щелкает по любому пункту, я хочу, чтобы цена этого элемента помещается в текстовое полеДобавить значение в текстовое поле из выпадающего списка с, если

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (comboBox1.SelectedItem == "LED") 
    { 
     textBox1.Text = "20"; 
    } 
    if (comboBox1.SelectedItem == "Ahorradores") 
    { 
     textBox1.Text = "50"; 
    } 
    if (comboBox1.SelectedItem == "Incandecentes") 
    { 
     textBox1.Text = "100"; 
    } 
} 

I не может заставить его работать, также, если кто-нибудь знает, как это сделать в Excel, было бы здорово, я много искал и не нашел ответов

+0

Я попытался SelectedValue и SelectedText тоже и не работает –

+0

Можете ли вы показать, как вы наполнении COMBOBOX? – Kinetic

+2

Они не похожи на вложенные ifs на меня ... пробелы вводят в заблуждение. – Adriano

ответ

0

Здесь вы можете использовать текстовое свойство. Например:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    switch (comboBox1.Text) 
    { 
     case "LED": 
      textBox1.Text = "20"; 
      break; 
     case "Ahorradores": 
      textBox1.Text = "50"; 
      break; 
     case "Incandecentes": 
      textBox1.Text = "100"; 
      break; 
    } 
} 
1

Возможно, вам стоит пойти лучше, чем жестко кодировать ваши значения в событии комбо. Например, вы можете создать класс для элементов:

public class Element 
{ 
    public string Name { get; set; } 
    public decimal Price { get; set; } 

    public override string ToString() 
    { 
     return this.Name; 
    } 
} 

При заполнении выпадающий, сделать это с помощью этого класса и настройки его значения из базы данных или любой другой источник данных является. Запрограммированный пример:

comboBox1.Items.Add(new Element() { Name = "LED", Price = 20 }); 
comboBox1.Items.Add(new Element() { Name = "Ahorradores", Price = 50 }); 
comboBox1.Items.Add(new Element() { Name = "Incandescentes", Price = 100 }); 

А потом, поставить это в случае:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Element element = comboBox1.SelectedItem as Element; 
    textBox1.Text = element.Price.ToString(); 
} 

Обратите внимание, что я установил свою опечатку в "incandescentes".

+0

Спасибо за ответ, заполнение comboBox работает таким образом, но при нажатии ничего не происходит, я добавил класс в качестве нового класса в проект, я что-то не так? –

+0

Ну, если он не работает, вы делаете что-то неправильно. Но я не волшебник, поэтому я не знаю, что вы на самом деле делали. : P Поместите контрольную точку в 'comboBox1_SelectedIndexChanged' для ее отладки! – Andrew

+0

@RobertoMisc, любое обновление? – Andrew

0

Вот небольшой взлом, который мне нравится использовать, когда я чувствую себя ленивым. Любой текст после \0 не отображается.

comboBox1.DataSource = "LED\020 Ahorradores\050 Incandecentes\0100".Split(); 

затем, чтобы получить часть после \0

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    //textBox1.Text = comboBox1.SelectedItem.ToString().Split('\0')[1]; 
    textBox1.Text = (comboBox1.SelectedItem as string ?? "").Split('\0').LastOrDefault(); 
} 
Смежные вопросы