C# 从MenuStrip Winfoms隐藏一些菜单

C# 从MenuStrip Winfoms隐藏一些菜单,c#,winforms,menustrip,C#,Winforms,Menustrip,我的Windows窗体应用程序中有一个包含MenuItems的MenuStrip 我想检查一些条件,并在菜单提示栏中禁用菜单项的可见性。 假设普通用户正在访问应用程序,则某些菜单项将隐藏,如果管理员用户正在访问应用程序,则所有菜单项都应可见 这是我的代码(我不确定),它不起作用 public Visite(string username) { InitializeComponent(); label1.Text = username;

我的Windows窗体应用程序中有一个包含MenuItems的MenuStrip

我想检查一些条件,并在菜单提示栏中禁用菜单项的可见性。 假设普通用户正在访问应用程序,则某些菜单项将隐藏,如果管理员用户正在访问应用程序,则所有菜单项都应可见

这是我的代码(我不确定),它不起作用

  public Visite(string username)
    {
        InitializeComponent();
        label1.Text = username;

        using (SqlConnection con = new SqlConnection("Data Source=ADMIN-PC\\SQLEXPRESS;Initial Catalog=timar;Integrated Security=True"))
        {
            con.Open();
            bool UserIsAdmin = true;
            using (SqlCommand cmd = new SqlCommand("select * from [User] where Role =@Role", con))
            {
                cmd.Parameters.AddWithValue("@Role", "Admin");

                UserIsAdmin = (int)cmd.ExecuteScalar() > 0;
            }
            if (UserIsAdmin == false)
            {
                utilisateurToolStripMenuItem.Visible = false;
            }
           else
           {
               utilisateurToolStripMenuItem.Visible= true;
            }
           con.Close();
       }

    }

请帮忙。提前感谢。

您在问题中谈论的是可见性,但代码显示已启用

这是两件完全不同的事情


如果您坚持使用visibility,您应该将
使用UrToolStripMenuItem.Visible
设置为false

您在问题中谈论的是可见性,但您的代码表示已启用

这是两件完全不同的事情

如果您坚持使用Visibility,您应该将
使用urToolStripMenuItem.Visible
设置为false

尝试此操作

public Visite(string username)
{
    InitializeComponent();
    label1.Text = username;
    using (SqlConnection con = new SqlConnection("Data Source=ADMIN-PC\\SQLEXPRESS;Initial Catalog=timar;Integrated Security=True"))
    {
        con.Open();
        bool UserIsAdmin = false;
        using (SqlCommand cmd = new SqlCommand("select * from [User] where Role =@Role", con))
        {
            cmd.Parameters.AddWithValue("@Role", "Admin");
            UserIsAdmin = (int)cmd.ExecuteScalar() > 0;
        }
       utilisateurToolStripMenuItem.Visible = UserIsAdmin;
     }
}
试试这个

public Visite(string username)
{
    InitializeComponent();
    label1.Text = username;
    using (SqlConnection con = new SqlConnection("Data Source=ADMIN-PC\\SQLEXPRESS;Initial Catalog=timar;Integrated Security=True"))
    {
        con.Open();
        bool UserIsAdmin = false;
        using (SqlCommand cmd = new SqlCommand("select * from [User] where Role =@Role", con))
        {
            cmd.Parameters.AddWithValue("@Role", "Admin");
            UserIsAdmin = (int)cmd.ExecuteScalar() > 0;
        }
       utilisateurToolStripMenuItem.Visible = UserIsAdmin;
     }
}

设置UtilizateUrToolStripMenuItem.Visible=false且未启用,enabled仍将显示menuI认为您应该启用readonlySet UtilizateUrToolStripMenuItem.Visible=false且未启用,enabled仍将显示menuI认为您应该启用readonlyIt不起作用,
使用工具条带菜单项
对于所有类型的Users@Yosra,调试并查看从数据库返回的“UserIsAdmin”的值是多少。
UserIsAdmin
的值是真的。该值对正常用户也是真的吗?是的,对正常用户也不起作用,
使用工具条带菜单项
对于所有类型的Users@Yosra,调试并查看从数据库返回的“UserIsAdmin”的值是多少。
UserIsAdmin
的值是真的。该值对正常用户也是真的吗?是的,对正常用户也是