lzs40 2016-07-13 16:48 采纳率: 0%
浏览 4691

c#winform实现在textbox1中输入,textbox2上会自动显示1减textbox1的值

同样在textbox2中输入一个数,textbox1上会自动显示1减textbox2的值(textbox1的值加textbox2的值等于1)
求大神解答,我打的代码总是出错,麻烦帮我看看
界面如下:图片说明
代码如下:
private void textBox1_TextChanged(object sender, EventArgs e)
{
double a = Convert.ToDouble(textBox1.Text);
if (a > 1 || a < 0)
{
MessageBox.Show("alpha值为非负数且不能大于1");
}
else
{
this.textBox2.Text = Convert.ToString(1 - Convert.ToDouble(textBox1.Text));
}

    }

    private void textBox2_TextChanged(object sender, EventArgs e)
    {

        double a = Convert.ToDouble(textBox2.Text);
        if (a > 1 || a < 0)
        {
            MessageBox.Show("beta值为非负数且不能大于1");
        }
        else
        {
            this.textBox1.Text = Convert.ToString(1 - Convert.ToDouble(textBox2.Text));
        }

    }

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) //设置textbox1只能输入数字
    {
        if (e.KeyChar == 0x20) e.KeyChar = (char)0;  //禁止空格键
        if ((e.KeyChar == 0x2D) && (((TextBox)sender).Text.Length == 0)) return;   //处理负数
        if (e.KeyChar > 0x20)
        {
            try
            {
                double.Parse(((TextBox)sender).Text + e.KeyChar.ToString());
            }
            catch
            {
                e.KeyChar = (char)0;   //处理非法字符
            }

        }
    }

    private void textBox2_KeyPress(object sender, KeyPressEventArgs e) //设置textbox2只能输入数字
    {
        if (e.KeyChar == 0x20) e.KeyChar = (char)0;  //禁止空格键
        if ((e.KeyChar == 0x2D) && (((TextBox)sender).Text.Length == 0)) return;   //处理负数
        if (e.KeyChar > 0x20)
        {
            try
            {
                double.Parse(((TextBox)sender).Text + e.KeyChar.ToString());
            }
            catch
            {
                e.KeyChar = (char)0;   //处理非法字符
            }

        }
    }
  • 写回答

2条回答

  • threenewbee 2016-07-14 00:25
    关注
     keypress的代码去掉,
    private void textBox2_TextChanged(object sender, EventArgs e)
        {
    
            double a = Convert.ToDouble(textBox2.Text);
            if (a > 1 || a < 0)
            {
                MessageBox.Show("beta值为非负数且不能大于1");
            }
            else
            {
                this.textBox1.Text = Convert.ToString(1 - Convert.ToDouble(textBox2.Text));
            }
    
        }
    修改为
    bool b = false;
    private void textBox2_TextChanged(object sender, EventArgs e)
        {
    if (b) return;
            double a = Convert.ToDouble(textBox2.Text);
            if (a > 1 || a < 0)
            {
                MessageBox.Show("beta值为非负数且不能大于1");
            }
            else
            {
                        b = true;
                this.textBox1.Text = Convert.ToString(1 - Convert.ToDouble(textBox2.Text));
                            b = false;
            }
    
        }
    另一个类似
    
    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿