C# 将语句对象切换为int问题
我正在尝试使用C# 将语句对象切换为int问题,c#,winforms,listbox,switch-statement,C#,Winforms,Listbox,Switch Statement,我正在尝试使用selectedItem命令查看列表框中选择的内容,然后根据选择的内容使用开关设置activityLevel变量。然后,我需要能够将该变量乘以设置为双精度的BMR变量。然后,结果将显示在标签中 string activityLevel = lstActivityLevel.SelectedItem.ToString(); switch (activityLevel) { case 1: activityLevel = Convert.ToInt32(ACTI
selectedItem
命令查看列表框中选择的内容,然后根据选择的内容使用开关设置activityLevel
变量。然后,我需要能够将该变量乘以设置为双精度的BMR
变量。然后,结果将显示在标签中
string activityLevel = lstActivityLevel.SelectedItem.ToString();
switch (activityLevel)
{
case 1:
activityLevel = Convert.ToInt32(ACTIVTY_LEVEL2);
break;
case 2:
activityLevel = Convert.ToInt32(ACTIVTY_LEVEL3);
break;
case 3:
activityLevel = Convert.ToInt32(ACTIVTY_LEVEL4);
break;
case 4:
activityLevel = Convert.ToInt32(ACTIVTY_LEVEL5);
break;
}
//Display BMR in label
lblBMRResult.Text = (BMR*activityLevel).ToString();
您可以将SelectedItem值转换为字符串。并且值1(int)与“1”(字符串)不同。。。因此,您必须将switch语句更改为:
switch (activityLevel)
{
case "1":
blah, blah...
break;
}
等等
或者不要在SelectedItem上调用ToString()
或者您可以使用SelectedIndex而不是SelectedItem。您可以使用
SelectedIndex
,然后将lstActivityLevel
的每个项目设置为0到4之间的数字:
double activityLevel = 0;
switch (lstActivityLevel.SelectedIndex)
{
case 0:
activityLevel = ACTIVTY_LEVEL1;
break;
case 1:
activityLevel = ACTIVTY_LEVEL2;
break;
case 2:
activityLevel = ACTIVTY_LEVEL3;
break;
case 3:
activityLevel = ACTIVTY_LEVEL4;
break;
case 4:
activityLevel = ACTIVTY_LEVEL5;
break;
}
lblBMRResult.Text = (BMR * activityLevel).ToString();
你的问题是什么?列表框中填充的数据类型是什么?