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

C# WinForms 输入角度实时计算正弦值同步到另一文本框报错求助

问题根因

你的代码存在3个核心错误:

  • 取值对象错误:你绑定的是角度输入框angTxtbox的文本变更事件,但代码中错误读取了结果展示框sinAngTxtbox的文本,后者初始为空或非整数内容,直接转换自然会触发格式异常
  • 无非法输入校验:直接使用Convert.ToInt32转换用户输入,遇到空值、非数字、超出整数范围的内容都会抛出System.FormatException
  • 结果框未锁定编辑权限:没有设置sinAngTxtbox为只读状态,用户手动编辑内容后也会导致后续逻辑出错

修复方案

首先在窗体初始化逻辑(构造函数或Form_Load事件)中添加代码,锁定结果框的编辑权限:

sinAngTxtbox.ReadOnly = true;

再修改AngTxtbox_TextChanged的逻辑:

private void AngTxtbox_TextChanged(object sender, EventArgs e)
{
    // 安全校验:仅输入为合法整数时才执行计算
    if (int.TryParse(angTxtbox.Text, out int angle))
    {
        double sinValue = Math.Sin(angle * Math.PI / 180);
        // 可按需指定保留小数位数,比如保留4位改为ToString("F4")
        sinAngTxtbox.Text = sinValue.ToString();
    }
    else
    {
        // 输入不合法时清空结果,也可替换为自定义提示文本
        sinAngTxtbox.Text = string.Empty;
    }
}

额外优化建议

  • 如果允许输入带小数的角度,可将int.TryParse替换为double.TryParse,适配更灵活的输入场景
  • 可给angTxtbox添加输入拦截逻辑,仅允许输入数字、负号和小数点,从源头避免用户输入非法字符

内容的提问来源于stack exchange,提问作者Claudio Andrizzi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:15:09