代码
FROM1代码
        private void comboBox1_TextChanged(object sender, EventArgs e)
        {
            if (comboBox1.Text == "*增加新部门...")
            {
                frmAdd f2 = new frmAdd();
                f2.ShowDialog(this);
            }
        }
FROM2代码
        private void dataGridView1_DoubleClick(object sender, EventArgs e)
        {
            int intRowNumber = this.dataGridView1.CurrentCell.RowIndex;//鼠标指向的哪一行
            string employeeName = this.ds.Tables["部门"].Rows[intRowNumber]["部门名称"].ToString();//获得指向那一行“员工ID”的值 
            frmEmployeeAdd f1 = (frmEmployeeAdd)this.Owner;
            f1.comboBox1.Text = employeeName;
            this.Close();
        }
为什么这里用this.close();不能关闭窗口,而是又新建了一个frmadd窗口。我要实体是的双击后把datagridview行的值传回给FROM1的combox1.text中。现在功能是正常的,就是双击后不能关闭,反而又新建出一个窗口,这是为什么呀?大家伙帮我看看我错在哪里了,请指正,谢谢!

解决方案 »

  1.   

    使用TextUpdate事件
    TextChanged是在属性改变前发生的
      

  2.   

    sprc_lcl
    使用TextUpdate事件
    TextChanged是在属性改变前发生的你的方法还是一行,而且不是问题所在,我是可以弹出from2只是在传值回from1时本来要求from2关闭的,现在反而又重建了一个from2,其他功能上一切都是正常的
      

  3.   

    sorry, 回答错误..
    你逐语句调试一下
      

  4.   

    你调用了combox的这个comboBox1_TextChanged事件,当你双击datagridview时改变combox中的文本值肯定要处罚comboBox1_TextChanged这个事件了。。肯定又创建了一个FrmAdd窗口了。。因为是new出来的所以父窗体可定关不掉如果想实现传值并且弹出FrmAdd窗口,并且关闭当前窗口就不能用New的方式、或者使用多线程来承载每个窗口每个线程控制一个窗体,结束当前窗体不会影响其他窗体