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
相关产品推荐
相关产品推荐

