使用两个选定的组合框项目计算textbox.text

时间:2015-12-11 12:02:35

标签: c# wpf dynamic combobox

我的问题:在选择了两个combobox变量之后,我想将这两个变量分开并将Textbox设置为计算结果。

两个Comboboxes:Körpergröße& Gewicht

textbox:BMI

首先,代码我正在使用(显然现在不工作)

        protected void Körpergröße_SelectedIndexChanged(object sender, EventArgs e)
    {
        int a;
        int b;
        //In this way you can compare the value and if it is possible to convert into an integer. 
        if (int.TryParse(Körpergröße.SelectedItem.ToString(), out a) && int.TryParse(Gewicht.SelectedItem.ToString(), out b))
        {

            fillTextBox(a, b);
        }
    }

    protected void Gewicht_SelectedIndexChanged(object sender, EventArgs e)
    {
        int a;
        int b;
        if (int.TryParse(Körpergröße.SelectedItem.ToString(), out a) && int.TryParse(Gewicht.SelectedItem.ToString(), out b))
        {

            fillTextBox(a, b);
        }
    }

    private void fillTextBox(int value1, int value2)
    {
        BMI.Text = (value1 / value2).ToString();
    }

两个comboboxes的默认值是字符串..(“Bitteususwählen”)

图片现在的样子。选择两个int值后,计算结果应显示在BMI Textbox

Picture

如果有人能用一些附注的代码回答我,那将是很好的,以便我理解..

提前致谢!

2 个答案:

答案 0 :(得分:-1)

如果没有余数,则无法划分整数值。因此,您需要将int类型更改为float类型:

private void Gewicht_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   float a;
   float b;
   if (float.TryParse(Körpergröße.SelectedItem.ToString(), out a) && float.TryParse
(Gewicht.SelectedItem.ToString(), out b))
   {
      fillTextBox(a, b);
      string str = "";
   }
}

如果划分两个整数,例如:

int k=130/150;

在现实生活中,我们知道k将是0.86。但是没有机会显示类型integer的余数,因为这种类型是不可分割的。 int类型的值不能为0,58.8。它可以只是15或任何整数类型。

float类型可以存储(拥有)100,5233.333等值。这就是为什么你看到0而不是你的价值的原因。

如果要限制整数值后的数字计数,可以使用.ToString()方法的重载:

private void fillTextBox(float value1, float value2)
{
    textBox.Text = ((value1 / value2)).ToString("0.00");            
}

有关详细信息,请参阅Custom Numeric Format Strings on MSDN

答案 1 :(得分:-1)

我建议使用selectionChanged事件并将其附加到您的组合框,从两者中获取所选值,然后确保您没有任何null值(string可以为null,但{ {1}}不能)更像这样的东西:

XAML

int

C#

<ComboBox Name="cb1" SelectionChanged="GetText" SelectionMode="Single">
  <ComboBoxItem>1</ComboBoxItem>
  <ComboBoxItem>2</ComboBoxItem>
  <ComboBoxItem>3</ComboBoxItem>
</ComboBox>

<ComboBox Name="cb2" SelectionChanged="GetText" SelectionMode="Single">
  <ComboBoxItem>1</ComboBoxItem>
  <ComboBoxItem>2</ComboBoxItem>
  <ComboBoxItem>3</ComboBoxItem>
</ComboBox>