如何从mdi子窗体中获取mdi父控件

时间:2013-08-31 18:20:50

标签: c# winforms

有mdi父表单包含menustrip最初用户从子登录表单成功登录后禁用菜单条..成功登录后我需要启用mdi父菜单条

到目前为止,我所尝试过的是这样的事情,但它没有用。

if (username == validUsername && password == validPassword)
    {
             this.mdicontainer.menustrip.enabled = false;
    }

从子表单访问mdiparent控件的方法是什么..

2 个答案:

答案 0 :(得分:2)

从子形式更改主窗体的属性对我来说是一种不好的方式。如何创建登录对话框表单并仅用于请求登录和密码? 默认的登录表单场景非常简单:

  1. 您有主表单(MainFrm)并使用登录文本框,密码文本框和“确定”以及“取消”按钮创建登录表单(LoginDlg)
  2. 在开头(例如在MainFrm_Shown),您创建了LoginDlg的新实例并将其称为“ShowDialog()”方法
  3. 如果用户点击“确定”,您将从LoginDlg收到MainFrm中的登录名和密码
  4. 您在MainFrm中以某种方式分析登录名和密码
  5. 如果登录名和密码正确无误,请启用menustrip或其他
  6. 否则,您将显示错误消息并再次显示DialogFrm
  7. 以下是有关创建登录表单的一些有用链接:

答案 1 :(得分:0)

假设您有一个名为 MDIMaster 的MDI表单,其中包含您自己的名为 MenuStripEnabled 的自定义属性以及名为 MainMenuStripControl 的菜单条控件:

        // Property variable
        private bool _MenuStripEnabled = true;

        // Custom property
        public bool MenuStripEnabled
        {
            get { 
               return _MenuStripEnabled; 
            }
            set { 
               _MenuStripEnabled = value; 
               this.MainMenuStripControl.Enabled = value;
            }
        }

然后从子表单中调用它,您只需执行此操作:

        (this.MdiParent as MDIMaster).MenuStripEnabled = false;

"作为MDIMaster" 部分将通用MdiParent重新指定为您的特定表单类型,允许您访问自定义属性。

- )