我想在Form1打开Form2,并且使得Form1中的textbox的Enable属性变为false,当Form2打开,工作完,关闭时候,让Form1的textbox1的Enable属性重置为true,请指导啊!

解决方案 »

  1.   

    这个就是窗体间传值的问题,方法有很多种,论坛也有前辈总结过这些方法,这里就不多说了。
    当你打开form2的时候,即Show(this)或者ShowDialog(this)的时候,将Form1的实例this传过去,然后在Form2关闭前的FormClosing事件里面获取到Form1的实例,然后通过Form1的实例来调用textbox的Enable属性就好了…
      

  2.   

    比如说:我在Form1中代码是这样的:        
             public static Form1 frm1 = new Form1();
            private void textBox1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                Form2 frm2 = new Form2();
                textBox1.Enabled = false;
                frm2.Show(frm1);
            }
    在Form2的 时间中如何修改textbox1.Enabled=true呢  
             private void button1_Click(object sender, EventArgs e)
            {
               
            }
      

  3.   

    Form2 frm2 = new Form2();
    textBox1.Enabled = false;
    frm2.ShowDialog();
    textBox1.Enabled = true;
      

  4.   

    你这段代码应当放在哪里呢,如果放在Form1的事件中,那么它是在打开之后又重新变回true。并没有在Form2的事件处理中改变属性啊。
    另外,我的程序中,打开Form2用的是show,因为用Showdialog的话,我就没有办法从Form1中再打开别的窗口了,谢谢!
      

  5.   


    FORM1中:
    public TextBox TB
    {
         get{return textbox1;}
    }
    private void textBox1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
          Form2 frm2 = new Form2();
          textBox1.Enabled = false;
          frm2.Show(this);
    }
    FORM2中:
    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
    //至于是什么情况下关闭的根据你的情况判断
          Form1 f1=(Form1)this.Owner;
          f1.TB.Enabled=true;
    }
      

  6.   

    把Form1的textBox1的Modifiers改为internal或public
    然后在Form1中弹窗Form2 frm2 = new Form2();
    //在Form2关闭是置为true,其他事件类似
    frm2.FormClosed += (obj, evt) => (this.Owner as Form1).textBox1.Enabled = true;
    textBox1.Enabled = false;
    frm2.Show(this);
      

  7.   

    http://www.cnblogs.com/cosoft/archive/2011/08/08/2130659.html