在Winform下,显示A、B两个窗口,A窗口的Enabled属性为false。
我想在关闭B窗口的时候,将A窗口的Enabled属性设置为true,请问如何实现

解决方案 »

  1.   

    A和B什么关系?
    如果是在A打开的B,那么在A中B.Show();之后加上this.Enabled = true;就行啦
      

  2.   

    如果能访问到A的实例,就直接A.Enabled
      

  3.   

    如果B是由A弹出的,则弹出B的时候,通过B的构造函数将A的窗口对象传递B中,并保存
    在B中,关闭B的时候,直接A。Enable=true即可。如果A、B没有关闭,则在B中调用API,FindWindow()寻找A窗口的句柄,找到后调用API EnableWindow
    设置状态。
    你应该弹出B的采用ShowDialog方式的话,A窗口就不能接受消息,等B关闭的时候A自动回复的。
      

  4.   

    1,2楼正解。再说一个传参的//Form1窗体按钮点击事件
    private void btnfrmShow_Click(object sender, EventArgs e)
    {
       Form2 f = new Form2(this);
       f.Show();
    }//Form2Form1 frm;
    public Form2(Form1 frm1)
    {
       frm = frm1;
       InitializeComponent();
    }private void btnClose_Click(object sender, EventArgs e)
    {
       frm.Enabled = true;
       this.Close();
    }
      

  5.   

    “通过B的构造函数将A的窗口对象传递B中”,请问这句话具体怎么实现
      

  6.   

    重写构造函数方法,用传参的方法将B的窗口获取焦点时进行Enabled设置即可。
      

  7.   

    使用模态对话框不行吗?            Form2 form2 = new Form2();
                form2.ShowDialog();
                // 自身关闭,原来窗口可用。
                this.DialogResult = DialogResult.OK;