【问题标题】:How to manage menuStrip in Mdiparent from child form?如何从子窗体管理 Mdiparent 中的 menuStrip?
【发布时间】:2015-05-25 08:15:16
【问题描述】:

我有 2 个表单:登录(子)和 Form1(作为 MdiParent)。
登录表单有 3 个角色,每个角色对 menuStrip 的访问控制不同

示例: form1 中的 menuStrip:

-file (login, logout)
master (register, view)

角色:管理员、培训师、实习生。
登录后,管理员可以访问的菜单是文件(登录,注销)和主(查看)。

所以我的问题是如何在登录表单中禁用/隐藏管理员菜单注册?

【问题讨论】:

  • WinForms 或 WebForms 还是别的什么?请更详细地描述问题。

标签: c# winforms


【解决方案1】:

管理员成功登录后,您只需转到要按名称隐藏的特定菜单项,并将其Visible 属性设置为false

((Form1)this.MdiParent).RegisterMenuItem.Visible = false;

您必须确保菜单项不是私有的。它必须是内部的或公开的。

【讨论】:

  • 我试过了。无法从子表单访问或管理注册菜单项(我需要从管理员访问中禁用)。
  • 如何知道菜单项是否公开? bcs 我之前尝试过你的代码,它没有错误,但管理员仍然可以访问注册菜单并且它对管理员可见(在这种情况下,我需要禁用注册菜单的管理员访问权限)
【解决方案2】:

一种方法是在 MDI 表单中创建一个公共方法,其中包含禁用注册菜单的逻辑,然后您从登录表单中调用它,如下所示:

在 MDI 表单中:

public void DisableRegisterMenu()
{
    registerMenuItem.Enabled = false;
}

在登录表单中:

var parent = (Form1) MdiParent;
parent.DisableRegisterMenu();

/A

【讨论】:

  • 我也试过了,但以管理员身份登录后,注册菜单仍然可见,管理员可以访问。
  • 您是否检查过,以便您没有任何代码在干扰的父项中重置此菜单项?
  • 对不起,我不明白你的意思。我已经这样做了,但代码仍然不起作用。
  • 我认为您需要为这个问题添加更多代码,以便我了解您是如何解决它的。
  • 您的代码看起来应该可以工作,您是否尝试将 Watch 添加到 regToolStripMenuItem.Visible 属性以查看该属性是否在代码中的其他位置设置为 true?
【解决方案3】:
this is my login form codes :

                        if (count == 1)
                        {

                            UserInformation.CurrentLoggedInUser = (string)rdr["UserName"];
                            MessageBox.Show("Welcome " + comboBox1.Text + UserInformation.CurrentLoggedInUser);

                            UserInformation.CurrentLoggedInUser = (string)rdr["UserRole"];
                            if (UserInformation.CurrentLoggedInUser == "Administrator")
                            {
                                this.Close();
                                this.MdiParent = new Form1();
                               // ((Form1)this.MdiParent).hide();
                                //((Register_Training_Participant)this.MdiParent).Hide();
                                var parent = (Form1)MdiParent;
                                parent.AdminDisableControl();


                            }

//this is the code for my mainform :
public void AdminDisableControl()
        {
            regToolStripMenuItem.Visible = false;

        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多