已知拱高和弦长,求弧长、半径、角度

按钮click事件代码:

       private void btnCal_Click(object sender, EventArgs e)
        {
            if (txth.Text.Trim() == "")
            {
                errorProvider1.SetError(txth, "拱高不能为空!");
                txth.Focus();
                return;
            }
            if (txtw.Text.Trim() == "")
            {
                txtw.Focus();
                errorProvider1.SetError(txtw, "弦长不能为空!");
                return;
            }


            double h = Convert.ToDouble(txth.Text);
            double w = Convert.ToDouble(txtw.Text);
            double r = (Math.Pow(h, 2.0) + Math.Pow(w, 2.0) / 4.0) / (h * 2.0);
            double a = 2 * Math.Asin(w / 2 / r);    //第一法 注意这是个孤度值,不是微软说的角度值,纠结之处吧! 
            //     double a = Math.Acos(Math.Pow((r - h) / r,2) *2-1);  //第二法

            double l = a * r;

    //以下为那个劣孤/优孤之处理
            if (h > r)
            {
                l = 2 * Math.PI * r - l;
                a = 2 * Math.PI - a;
            }

            lblr.Text = r.ToString();//显示半径
            lbla.Text = (a * 180 / Math.PI).ToString();//转为角度显示
            lbll.Text = l.ToString();//显示孤长

        }

 

限制文本框输入的代码,相关文本框KeyPress与之相绑定即可

        private void txt_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar >= '0' && e.KeyChar <= '9') || e.KeyChar == '.' || (byte)(e.KeyChar) == 8)
            {
            }
            else
            {
                e.Handled = true;
            }
        }

另外可加些处理,比如回车

        private void txtw_KeyUp(object sender, KeyEventArgs e)
        {
            errorProvider1.SetError(txtw, "");
            if (e.KeyCode == Keys.Enter) btnCal_Click(null, null);
        }

        private void txth_KeyUp(object sender, KeyEventArgs e)
        {
            errorProvider1.SetError(txth, "");
            if (e.KeyCode == Keys.Enter) txtw.Focus();
        }

第一次显示则聚焦在第一个文本上

        private void FormMain_Shown(object sender, EventArgs e)
        {
            txth.Focus();
        }

有图有真相:(注意三种不同的夹角)

厂里正好用上此类小程序的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值