C# 单击禁用的菜单项时显示MessageBox

C# 单击禁用的菜单项时显示MessageBox,c#,C#,我想在任何人单击未启用的菜单项时显示一个消息框。我尝试了以下编码,但没有显示消息框 编码: private void updateFineDetailsToolStripMenuItem_Click(object sender, EventArgs e) { if (updateFineDetailsToolStripMenuItem.Enabled == true) { frmUpdateFineDetails objUpdateFineDetails = ne

我想在任何人单击未启用的菜单项时显示一个消息框。我尝试了以下编码,但没有显示消息框

编码:

private void updateFineDetailsToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (updateFineDetailsToolStripMenuItem.Enabled == true)
    {
        frmUpdateFineDetails objUpdateFineDetails = new frmUpdateFineDetails();
        objUpdateFineDetails.MdiParent = this;
        objUpdateFineDetails.Show();
    }
    else if (updateFineDetailsToolStripMenuItem.Enabled == false)
    {
        MessageBox.Show("Unauthorized Person");
    }
}
默认情况下,我已将启用状态设置为false,当加载表单时,我正在检查用户是否为管理员,如果用户为管理员,则将为登录到应用程序的所有其他用户启用此菜单项。必须禁用上述菜单项

请注意,上述编码不会产生任何错误,但它甚至不会将messagebox显示为未经授权的人员

有人能帮我完成这项任务吗


提前谢谢

据我所知,禁用的菜单项不会引发单击事件。

据我所知,禁用的菜单项不会引发单击事件。

如果需要显示错误消息,请启用菜单项

如果管理员单击,则会发生默认操作;如果其他用户单击,则会显示消息框并阻止默认操作


从您的代码中,我认为您只需启用菜单项就可以做到这一点。

如果需要显示错误消息,请启用菜单项

如果管理员单击,则会发生默认操作;如果其他用户单击,则会显示消息框并阻止默认操作


从您的代码中,我认为您只需启用菜单项就可以做到这一点。

禁用菜单项或按钮的整个想法是为了防止用户与其交互。通常,控件也将以某种方式呈现,以便用户能够清楚地看到这一点。如果要阻止用户执行某些操作,例如基于用户是否为管理员,可以使用以下三种方法之一:

  • 保持控件处于启用状态,并通知未经授权的用户,如果他或她调用该函数,则该函数不可用
  • 禁用控件
  • 隐藏控件

在后两种情况下,没有交互,因为用户无法调用命令。如果对命令的访问是基于角色的,我通常倾向于隐藏该命令(这意味着如果我在启动应用程序时没有对该命令的访问权限,则在运行该命令时,该命令在任何时候都不会发生),或者,如果命令的可用性与数据状态有关,则禁用它。

禁用菜单项或按钮的整个想法是为了防止用户与其交互。通常,控件也将以某种方式呈现,以便用户能够清楚地看到这一点。如果要阻止用户执行某些操作,例如基于用户是否为管理员,可以使用以下三种方法之一:

  • 保持控件处于启用状态,并通知未经授权的用户,如果他或她调用该函数,则该函数不可用
  • 禁用控件
  • 隐藏控件
在后两种情况下,没有交互,因为用户无法调用命令。我通常倾向于隐藏命令,如果对它的访问是基于角色的(这意味着,如果我在启动应用程序时没有对命令的访问权限,在运行它时,它不会在任何时候发生),或者如果命令的可用性与数据状态相关,则禁用它。

禁用菜单项不是外观显示问题,它做的正是你期望从这个术语中得到的——它禁用菜单项

禁用时,菜单项实际上是惰性的-它不会引发click事件,并且没有(直接的)方法使它这样做

我可以猜测你的动机——向你的用户解释为什么特定的菜单项对他们不可用——但是你需要找到一种不同的方法,一种适用于系统的方法,而不是反对它

一些可能的方法

  • 使菜单项保持禁用状态,允许用户选择它-然后您可以根据如何处理事件进行基于角色的选择
  • 禁用菜单项并在UI中的其他位置提供反馈,告知用户他们拥有的访问级别
  • 显示带有禁用控件原因的工具提示
  • 保持菜单项处于启用状态,但将其显示更改为非活动状态(这很难达到100%);这将允许触发事件并调用处理程序
  • 创建一个单独的“解释”菜单项,可能在“帮助”菜单上;调用时,所有禁用的菜单项都将启用,并将向用户解释命令不可用的原因
  • 某些系统会在状态栏上显示一行与突出显示的菜单项相关的帮助文本-您可以利用这一行来解释可用性:“维护客户详细信息(需要管理员角色)”
禁用菜单项不是一个装饰性的显示问题,它正是您从术语中所期望的——它禁用菜单项

禁用时,菜单项实际上是惰性的-它不会引发click事件,并且没有(直接的)方法使它这样做

我可以猜测你的动机——向你的用户解释为什么特定的菜单项对他们不可用——但是你需要找到一种不同的方法,一种适用于系统的方法,而不是反对它

一些可能的方法

  • 使菜单项保持禁用状态,允许用户选择它-然后您可以根据如何处理事件进行基于角色的选择
  • 禁用菜单项并在UI中的其他位置提供反馈,告知用户他们拥有的访问级别
  • 显示带有禁用控件原因的工具提示
  • 保持菜单项处于启用状态,但将其显示更改为非活动状态(这很难达到100%);这将允许触发事件并调用处理程序
  • 创建一个单独的“解释”菜单项,可能在“帮助”菜单上;调用时,所有禁用的菜单项都将启用,并将向用户解释命令的原因