2015-04-08 4 views
1

Я работаю с простой программой с 3-мя комбинированными блоками и 1 кнопкой, а также с 1 текстовым полем. когда я нажимаю кнопку «среднее» в текстовом поле, должно отображать среднее значение из 3 выбранных номеров из поля со списком. У меня также есть код, но он не работает. может кто-нибудь из вас помочь мнеКак рассчитать средние значения из comboboxes

<ComboBox Name="cb6" Margin="2,9,0,0"> 
      <ComboBoxItem Content="5"/> 
      <ComboBoxItem Content="6"/> 
      <ComboBoxItem Content="7"/> 
      <ComboBoxItem Content="8"/> 
      <ComboBoxItem Content="9"/> 
      <ComboBoxItem Content="10"/> 
     </ComboBox> 
     <ComboBox Name="cb7" Margin="2,9,0,0"> 
      <ComboBoxItem Content="5"/> 
      <ComboBoxItem Content="6"/> 
      <ComboBoxItem Content="7"/> 
      <ComboBoxItem Content="8"/> 
      <ComboBoxItem Content="9"/> 
      <ComboBoxItem Content="10"/> 
     </ComboBox> 
     <ComboBox Name="cb8" Margin="2,9,0,0"> 
      <ComboBoxItem Content="5"/> 
      <ComboBoxItem Content="6"/> 
      <ComboBoxItem Content="7"/> 
      <ComboBoxItem Content="8"/> 
      <ComboBoxItem Content="9"/> 
      <ComboBoxItem Content="10"/> 
     </ComboBox> 


<TextBox Name="txtaverage" Width="100" Margin="0,10,0,0"/> 
     <Button Name="btnaverage" Width="80" Content="Mesatarja" Click="btnmesatarja_Click" /> 

    behind code 
    txtaverage.Text = (Convert.ToDouble(cb6.SelectedItem)+Convert.ToDouble(cb7.SelectedItem)+ Convert.ToDouble(cbnota8.SelectedItem)/3).ToString(); 
+0

что здесь проблема? – Muds

+0

Можете ли вы расширить любой из них, «он не работает»? Вызывает ли это какие-либо ошибки? Это что-то неожиданное? Нет текста в TextBox? Что-то совсем другое? – goobering

+0

, когда я нажимаю кнопку, чтобы получить среднее значение, отображается окно с информацией о том, что InvalidCastException было необработанным ..... Не удалось наложить объект типа «System.Windows.Controls.ComboBoxItem» на тип «System.IConvertible». – berat

ответ

0

Для простых случаев вы можете использовать combobox.Text

txtaverage.Text = ((Convert.ToDouble(cb6.Text)+Convert.ToDouble(cb7.Text)+ Convert.ToDouble(cb8.Text))/3).ToString(); 

в других случаях я бы рекомендовал, чтобы получить объект из SelectedItem/SelectedValue и искать свою ценность в его содержание.

- дальнейшее уточнение для опа

 var sum = 0.0; 
     var divisor = 0; 
     if (!string.IsNullOrEmpty(cb6.Text)) 
     { 
      sum += Convert.ToDouble(cb6.Text); 
      divisor++; 
     } 

     if (!string.IsNullOrEmpty(cb7.Text)) 
     { 
      sum += Convert.ToDouble(cb7.Text); 
      divisor++; 
     } 

     if (!string.IsNullOrEmpty(cb8.Text)) 
     { 
      sum += Convert.ToDouble(cb8.Text); 
      divisor++; 
     } 

     if (divisor > 0) 
     { 
      txtaverage.Text = (sum/divisor).ToString(); 
     } 
+2

Вы можете пропустить пару '()' before'/3' – Bolu

+0

Извините, я что-то пропустил? – Muds

+2

Суммы отключены - он разделил последнее число на 3, вместо того, чтобы брать среднее. – goobering