WinForms中如何在PostBtn_Click事件中用ComboBox值计算风寒指数?
问题解决方法
你的问题核心是没有通过Forecast类的实例访问它的属性,再加上变量名大小写和类定义不匹配,导致编译器提示“名称在当前上下文中不存在”。下面是具体的修正方案:
错误根源
- 你在事件方法里直接写
predicted_LoTemp = ...,但这个变量并没有在当前方法中定义——它是Forecast类的属性,必须通过实例(比如currentForecast)来访问,且要和类里的属性名大小写保持一致(类里是Predicted_LoTemp,首字母大写)。 new Forecast()后面多余的大括号属于语法冗余,直接给实例属性赋值即可。
修正后的完整代码
private void PostBtn_Click(object sender, EventArgs e) { // 创建Forecast类的实例 Forecast currentForecast = new Forecast(); // 通过实例访问类的属性,将ComboBox选中值赋值给属性 currentForecast.Predicted_LoTemp = Convert.ToInt32(PredictedLoTemp.SelectedItem); currentForecast.Wind_Speed = Convert.ToInt32(WindSpeed.SelectedItem); // 更新标签显示内容 HiTempLbl.Text = Convert.ToString(PredictedHiTemp.SelectedItem); LoTempLbl.Text = Convert.ToString(PredictedLoTemp.SelectedItem); WindSpeedLbl.Text = Convert.ToString(WindSpeed.SelectedItem); // 调用实例方法计算风寒指数并显示结果 WindChillLbl.Text = Convert.ToString(currentForecast.CalculateWindChill()); } public class Forecast { public int Predicted_LoTemp { get; set; } public int Wind_Speed { get; set; } // 风寒指数计算公式 public double CalculateWindChill() { double WindChill = 35.74 + 0.6215 * Convert.ToDouble(Predicted_LoTemp) - 35.75 * Math.Pow(Convert.ToDouble(Wind_Speed), 0.16) + 0.4275 * Convert.ToDouble(Predicted_LoTemp) * Math.Pow(Convert.ToDouble(Wind_Speed), 0.16); return WindChill; } }
额外建议
- 可以给ComboBox的
SelectedItem增加非空判断,避免转换时出现空引用错误,示例:if (PredictedLoTemp.SelectedItem != null && WindSpeed.SelectedItem != null) { // 执行赋值和计算逻辑 } - C#是区分大小写的语言,类属性遵循PascalCase命名规范(首字母大写),访问时务必保持名称一致。
内容的提问来源于stack exchange,提问作者DyWi
相关产品推荐
相关产品推荐

