界面如图例如
报告录入的short cut keys属性为ctrl+r
现在需要动态加载用户权限,
当报告录入的输入菜单enbale为false时
通过快捷键Ctrl+R仍然可以报告录入界面
计算把报告录入菜单enabled设置为false依然无效.
应该怎么解决呢?

解决方案 »

  1.   

    你用的三方控件吧
    默认的我试了,没这个问题
    菜单的快捷键是在窗口的ProcessCmdKey方法中处理的,你可以重写这个方法进行一些过滤
    比如检测到那个菜单项是不可用状态,然后按键又是Ctrl+R,就直接返回true;否则调用基类版本。像这样    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
            If (Not Me.ToolStripMenuItem3.Enabled) And
                keyData = Shortcut.CtrlR Then
                Return True
            Else
                Return MyBase.ProcessCmdKey(msg, keyData)
            End If
        End Function
    这种写法就是满足你题目的要求——不触发快捷键
    更简单的做法,可以直接那个菜单项的单击事件中做点简单的判断