日期:2014-05-17  浏览次数:20796 次

子窗体怎么更改父窗体控件属性?
目前我有一个MDI窗体MDIBOX,上面有一个弹出登录窗体的按钮MDILogin,一个子窗体Login作为登录窗体
我想实现点击MDILogin后,MDILogin自己隐藏,并弹出窗体Login,如果子窗体点“X”退出时,主窗体的MDILogin按钮又会可见。
我不知道为什么实现不了?

MDILogin的代码如下:
        private void MDILogin_Click(object sender, EventArgs e)
        {
            if (Login == null || Login.IsDisposed)
            {
                MDILogin.Visible = false;
                Login = new Login();
                Login.Owner = this;
                Login.ShowDialog();
            }
            else
            {
                Login.Owner = this;
                Login.ShowDialog();
            }

子窗体中代码如下
        private void Login_FormClosing(object sender, FormClosingEventArgs e)
        {
            Button MLogin = ((MDIBOX)this.Owner).Controls["MDILogin"] as Button;
            MLogin.Visible = true;
        }

------解决方案--------------------
http://bbs.csdn.net/topics/360140208
------解决方案--------------------
http://bbs.csdn.net/topics/390599630

把这个帖子回复改下就行了 



private void Button1_Click(object sender, EventArgs e)
{
   Login f2 = new Login();
   f2.ShowText += new Form2.ParentShowText(ShowText_Method);
MDILogin.visable=false;
   f2.Show();
}


Form1不一定是Form2的主窗体
然后在Form1中写一个实现的公共的事件
public void ShowText_Method()//参数与Form2中的委托对应起来
  {
      //根据Form2中的传参,实际是在Form1中操纵细节
MDILogin.visable=true;
 }


在Form2中的X的点击事件
private void FormClosing_Click(object sender, EventArgs e)
{
     ShowText();
}