电脑自带的计算器的科学型中的Sta按钮按下,跳出统计框。当我关闭统计框时,Ave,Sum等按钮又变回Enabled,这个怎么实现?小弟刚开始学C#,各位大牛帮忙指教下,下面是我  点击Sta按钮的代码  
form2 fm = null ; 
private void buttonSta_Click(object sender, EventArgs e)
        {
            
            if (fm == null)
            {
                fm = new Form2();
                fm.Show();
            }
            else
            {
                try
                {
                    fm.Show();
                    fm.Activate();  //激活form2并显示
                }
                catch    //如果窗口已关闭
                {
                    fm = new Form2();
                    fm.Show();
                }
            }
            buttonAve.Enabled = true;
            buttonS.Enabled = true;
            buttonSum.Enabled = true;
            buttonDat.Enabled = true;
        }

解决方案 »

  1.   


        private void button1_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2();
                f2.FormClosed += new FormClosedEventHandler(f2_FormClosed);//关闭时触发事件
                f2.ShowDialog();
            }        void f2_FormClosed(object sender, FormClosedEventArgs e)
            {
                //关闭时触发事件
                this.button2.Enabled = false;
            }
      

  2.   

    可以注册 fm 的 FormClosing 或者 FormClosed 事件,在里面修改父画面控件的Enabled例子:private void button1_Click(object sender, EventArgs e)
    {
        var f2 = new Form2();
        this.button1.Enabled = false;
        f2.FormClosing += (s, ee) => {
            this.button1.Enabled = true;
        };
        f2.Show();
    }
      

  3.   

    http://topic.csdn.net/u/20111112/08/2453569e-c6fb-4caa-b81f-938d44941dcf.html
      

  4.   

      fm   =   new   Form2();
      fm.Owner = this;          //通过Owner把 Form1设置成 Form2的Owner 
      fm.Show(); 然后在Form2的关闭事件中 加上:this(这个this代表Form2).Owner.button1.Enabled = false;其中Button的声明为 PUBLIC
      

  5.   

    其中Button的声明为 PUBLIC这个貌似不合适,怎么会把button都设成public呢?
      

  6.   

    通过公共类传参数来判断 或者使用Public static
      

  7.   

    用4楼的owner可以实现,如果不用owner,可以参考我的方法
    ((Button)(form1)System.Windows.Forms.Application.OpenForms["form1"].Controls["button1"]).Enable=True;
      

  8.   

    在From2窗体里写属性:public bool ProBisEnabled { get; set; }
    在From2窗体里你想让From1窗体里button变成Enabled=false的地方给ProBisEnabled赋值;在From1窗体里判断ProBisEnabled的值;或者把public bool ProBisEnabled { get; set; }写到一个Utility公共类里。