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 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器