You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:45:37