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

时间:2009-07-25 07:03:40

标签: c#

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

编码:

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,当表单加载时我正在检查用户是否为管理员,如果用户是管理员,则此菜单项将为登录上述应用程序的所有其他用户启用必须禁用菜单项。

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

有人可以帮我完成这项任务吗?

提前致谢!

5 个答案:

答案 0 :(得分:2)

禁用菜单项或按钮的整个想法是阻止用户与其进行交互。通常,控件也将以某种方式呈现,以使用户清楚。如果您想阻止用户采取某些操作,例如根据用户是否是管理员,您可以使用以下三种方法之一:

  • 启用控件并告知未经授权的用户,如果他或她调用该功能,则该功能不可用
  • 禁用控件
  • 隐藏控件

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

答案 1 :(得分:1)

据我了解,禁用的菜单项不会引发Click事件。

答案 2 :(得分:0)

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

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

从您的代码中我认为您可以通过启用菜单项来完成此操作。

答案 3 :(得分:0)

禁用菜单项不是化妆品显示问题,它只是您对术语的期望 - 它禁用菜单项。

禁用时,菜单项实际上是惰性的 - 它不会引发点击事件,并且没有(直接)方式来实现它。

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

一些可能的方法......

  • 禁用菜单项,允许用户选择它 - 然后您可以根据角色选择如何处理事件。
  • 禁用菜单项,并在用户界面的其他位置提供反馈,告诉用户他们拥有的访问级别。
  • 显示工具提示,其中包含禁用控件的原因
  • 启用菜单项,但将其显示更改为无效(这很难达到100%);这将允许触发事件并调用您的处理程序
  • 创建单独的“说明”菜单项,可能在“帮助”菜单上;调用时,所有禁用的菜单项都会启用,并向用户解释命令不可用的原因。
  • 某些系统会在状态栏上显示与突出显示的菜单项相关的一行帮助文本 - 您可以利用此信息来解释可用性:“维护客户详细信息(需要管理员角色)”

答案 4 :(得分:0)

禁用的控件不会引发Click事件。你应该模拟那个状态!例如:

  1. 启用菜单项
  2. 将菜单项的forecolor更改为SystemColors.GrayText
  3. 保存项目标签中的项目状态(启用或禁用)
  4. 如果点击事件引发,请先检查项目标记
  5. 如果启用了项目,则将菜单项的forecolor更改为正常的前色。