那是因为你每更改一次数字textBox1_TextChanged就执行一次,添加一次Leave事件的委托:
textBox1.Leave += new EventHandler(this.textBox1_Leave);这一行只要在窗体初始化时执行一次就可以了

解决方案 »

  1.   

    这是因为textBox1_TextChanged,你输入9的时候,textBox1_TextChanged触发一次,所以在Leave事件中执行一次MessageBox.Show(textBox1.Text);
    你输入12,textBox1_TextChanged执行两次,textBox1.Leave 事件上连接两次textBox1_Leave方法,所以textBox1_Leave会被执行两次,你的MessageBox.Show(textBox1.Text);也会执行两次,
    输入133依次类推。
      

  2.   

    你在Form初始化的时候将
    textBox1.Leave += new EventHandler(this.textBox1_Leave);
    就可以了。不要动态的改变它。
      

  3.   

    按理说集成环境会自动生成的,你检查一下InitializeComponent()中有没有,
    没有的话在窗体构造函数中添进去:        public Form1()
            {
                InitializeComponent();
                textBox1.Leave += new EventHandler(this.textBox1_Leave);
            }