我正在拼命地让我的代码工作。当每个ComboBox
选择了其值时,应该划分值,并将结果插入TextBox
。
ComboBoxes
- > Körpergröße
,Gewicht
TextBox
- > BMI
我的代码:
private void Körpergröße_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int value1, value2;
if (Körpergröße.SelectedItem.ToString() != "Bitte auswählen..." && Gewicht.SelectedItem.ToString() != "Bitte auswählen...")
{
string a = Körpergröße.SelectedItem.ToString();
string b = Gewicht.SelectedItem.ToString();
value1 = Int32.Parse(a);
value2 = Int32.Parse(b);
fillTextBox(value1, value2);
}
}
private void fillTextBox(int value1, int value2)
{
double result = value1 / value2;
BMI.Text = result.ToString();
}
private void Gewicht_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int value1, value2;
if (Gewicht.SelectedItem.ToString() != "Bitte auswählen..." && Körpergröße.SelectedItem.ToString() != "Bitte auswählen...")
{
string a = Körpergröße.SelectedItem.ToString();
string b = Gewicht.SelectedItem.ToString();
value1 = Int32.Parse(a);
value2 = Int32.Parse(b);
fillTextBox(value1, value2);
}
}
当我执行程序时,它总是在两者的if部分给出异常。
我将其与Bitte auswählen...
进行比较,以确保未在CombobBox
中选择此值,而是选择值。
Gewicht-组合框
<ComboBox Margin="205,77,0,0" Name="Gewicht" HorizontalAlignment="Left"
VerticalAlignment="Top" Width="123" Height="23"
SelectionChanged="Gewicht_SelectionChanged">
<ComboBoxItem Content="Bitte auswählen..." IsSelected="True" ></ComboBoxItem>
<ComboBoxItem Content="40"></ComboBoxItem>
<ComboBoxItem Content="41"></ComboBoxItem>
<ComboBoxItem Content="42"></ComboBoxItem>
</ComboBox>
Körpergröße-组合框
<ComboBox Margin="205,50,0,0" Name="Körpergröße" HorizontalAlignment="Left"
VerticalAlignment="Top" Width="123" Height="23" SelectionChanged="Körpergröße_SelectionChanged" >
<ComboBoxItem Content="Bitte auswählen..." IsSelected="True" ></ComboBoxItem>
<ComboBoxItem Content="150" ></ComboBoxItem>
<ComboBoxItem Content="151"></ComboBoxItem>
<ComboBoxItem Content="152"></ComboBoxItem>
</ComboBox>
答案 0 :(得分:1)
检查combobox
所选项目的方式不正确。它应该是这样的:
if (((Gewicht.SelectedItem) as ComboBoxItem).Content.ToString() != "Bitte auswählen...")
最好只跳过第一项,然后像这样选择所选项目:
if (Gewicht.SelectedIndex > 0 && Körpergröße.SelectedIndex > 0)
{
string a = ((Körpergröße.SelectedItem) as ComboBoxItem).Content.ToString();
string b = ((Gewicht.SelectedItem) as ComboBoxItem).Content.ToString();
}
答案 1 :(得分:0)
在将其值解析为String
之前,应检查以下内容Körpergröße.SelectedItem.ToString()
和
Gewicht.SelectedItem.ToString()
如果两个值都是非NULL,则可以解析它们ToString()..
答案 2 :(得分:0)
在运行所有代码之前,您不确定所选的组合框是否为-1。
“守则”是相同的,所以如此突破:
private void CalculateValues()
{
int value1, value2;
if (Gewicht.SelectedItem.ToString() != "Bitte auswählen..." && Körpergröße.SelectedItem.ToString() != "Bitte auswählen...")
{
string a = Körpergröße.SelectedItem.ToString();
string b = Gewicht.SelectedItem.ToString();
value1 = Int32.Parse(a);
value2 = Int32.Parse(b);
fillTextBox(value1, value2);
}
}
private void Gewicht_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(Gewicht.SelectedIndex > -1 && Körpergröße.SelectedIndex > -1)
{
CalculateValues();
}
}
private void Körpergröße_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(Körpergröße.SelectedIndex > -1 && Gewicht.SelectedIndex > -1 )
{
CalculateValues();
}
}
有一种更好的方法来编写该代码(例如,只更新类级别int value1或value2,然后调用CalculateValues(),但是这里的代码应该可以工作。请注意我选择的Index Index Changed事件检查以确保它是&gt; - 1:SelectedIndex&gt; -1,因为在加载时它被设置为-1。并且已经触发了更改事件..并且你在-1索引中没有任何内容.NULL REFERENCE。
答案 3 :(得分:0)
有可能
要解决在表单初始化时尝试在组合框中设置默认值。
希望这会有所帮助......