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

C# 如何从mdi子窗体获取mdi父控件,c#,winforms,C#,Winforms,存在包含菜单提示的mdi父窗体。用户从子登录窗体成功登录后,菜单条将被禁用。。成功登录后,我需要启用mdi父菜单条 到目前为止,我已经尝试过类似的方法,但它不起作用 if (username == validUsername && password == validPassword) { this.mdicontainer.menustrip.enabled = false; } 从子窗体访问mdiparent控件的方法是什么?从子窗体

存在包含菜单提示的mdi父窗体。用户从子登录窗体成功登录后,菜单条将被禁用。。成功登录后,我需要启用mdi父菜单条

到目前为止,我已经尝试过类似的方法,但它不起作用

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

从子窗体访问mdiparent控件的方法是什么?

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

  • 您有主窗体(MainFrm),您创建了带有登录文本框、密码文本框以及“确定”和“取消”按钮的登录窗体(LoginDlg)
  • 在开始时(例如在所示的MainFrm_),您创建LoginDlg的新实例并调用它的“ShowDialog()”方法
  • 如果用户单击“确定”,您将从LoginDlg接收MainFrm中的登录名和密码
  • 您可以在MainFrm中以某种方式分析登录名和密码
  • 如果登录名和密码正确,则启用menustrip或其他功能
  • 否则,将显示错误消息并再次显示对话框FRM
  • 以下是一些有关创建登录表单的有用链接:


    假设您有一个名为MDI Master的MDI表单,它有一个名为MenuStipEnabled的自定义属性和一个名为MainMenuStipControl的菜单条控件:

    然后,要从子窗体调用它,只需执行以下操作:

            (this.MdiParent as MDIMaster).MenuStripEnabled = false;
    
    “as MDIMaster”部分将通用MDIPRENT重新指定为您的特定表单类型,允许您访问自定义属性


    ;-)

    使用
    mdipradent
    属性。我不明白您是否可以解释您可以通过子窗体的属性
    mdipradent
    从子窗体访问Mdi父窗体,例如:
    childForm.mdipradent
    我需要访问Mdi父窗体的控件您必须将您的
    menustrip
    声明为public,或者提供一些公共属性/方法来访问/获取它,那么您就可以正常访问它了。
            (this.MdiParent as MDIMaster).MenuStripEnabled = false;