我想让一个弹出式窗体中的文本框读到数据后自动关闭该窗体。
我是使用文本框的 TextChanged 事件后处理窗体的关闭事件的,但是,它又打开了,不知道哪位大侠能解决?
以下是文本框文本发生改变时的原代码:
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text.Length == 5)
            { 
                int i;
                if (int.TryParse(txtCardNum.Text.Trim(), out i) == false)
                {
                    MessageBox.Show("错误!请重新输入。");
                    textBox1.Text=null;
                    textBox1.Focus();
                }
                else
                {
                    //这里再传出数据
                    this.Close();
                }
            }
        }

解决方案 »

  1.   


    if (int.TryParse(txtCardNum.Text.Trim(), out i) == false)
    改成
    if (int.TryParse(textBox1.Text.Trim(), out i) == false)
    试试
      

  2.   

    谢谢楼上!哦,对不起,我的文本框原先是 txtCardNum ,在此提问时忘了改这个名称。当然改后还是这样。
      

  3.   


    private void textBox1_TextChanged(object sender, EventArgs e)
            {            if (textBox1.Text.Length == 5)
                {
                    int i;
                    if (int.TryParse(textBox1.Text.Trim(), out i) == false)
                    {
                        MessageBox.Show("错误!请重新输入。");
                        textBox1.Text = null;
                        textBox1.Focus();
                    }
                    else
                    {
                        //这里再传出数据
                        this.Close();
                    }            }
            }我写了小例子,这么写没问啊
      

  4.   

    是呀,我也很郁闷!我在主窗体中是这么写的,你能帮我看看行吗!
    private void button1_Click(object sender, EventArgs e)
            {
                from2 fr = new from2();
                fr.ShowDialog();
                
                if (!fr.cardNum.Equals(null))
                {
                    textBox1.Text = fr.cardNum;
                }
            }注:这是按钮的单击事件。其中 cardNum 是 from2 窗体中的一个公共变量,textBox1 是主窗体中的文本框。
      

  5.   

    问题是:弹出的那个窗体何时关闭? 你在TextChanged事件里做的话,需要判断结束时刻。可能你需要判断 TextBox1.Text.Length > n ,然后关闭窗体。 TextChanged在每次输入新的文本时都会触发,也就是说你输入"abc",那就是触发3次。你又怎么知道在这三次里,哪次是你想关闭呢? 
      

  6.   


    没明白当满足什么条件的时候关闭窗体。
    如果直接判断文本框的值的长度大于N的时候就可以关闭。
    if(TextBox1.Text>length > N)
    {
        this.Form1.Close();
    }
    把这个放到TextChange()事件里面不可以吗?
      

  7.   

    试了一下,没什么问题。查下是否有其他地方调button1_Click,或者
    其他什么地方又执行了from2 fr = new from2();
    fr.ShowDialog();