是否有任何真正好的策略可以根据多个条件启用和禁用菜单项?
示例 - 我有一个带有“保存”和“取消”工具栏菜单项(和其他)的可编辑网格。最初加载网格时,它会检查用户是否具有编辑项目的权限。如果用户有权限 hd 可以编辑网格。最初 Save 和 Cancel 被禁用,因为它们不是必需的。如果用户进行编辑,那么我希望它们都被启用。目前我用我所谓的“FormMode”属性来做这件事。当用户开始编辑时,它会将表单/网格置于“脏”模式,并启用“保存”和“取消”按钮。如果更改了任何可编辑控件,它会将这个 (FormMode) 属性设置为 Dirty。如果他们点击“保存”或“取消”按钮,则数据将被保存,并且这些按钮再次被禁用(不需要它们)。
我的问题是,是否有更好、更优雅的方法来通过使用事件或其他属性来处理此启用/禁用?我在几十个表格和网格上都有同样的场景,似乎应该有一种更简单的方法来处理它。菜单项能否“感知”表单/网格状态并自动响应?我可以在多种形式上重复使用它们吗?
我不确定我的问题是否清楚——如果不是,对不起。但似乎我花了很多时间让菜单项根据表单的“模式”正确运行。我喜欢只在适当的时候启用它们。
这是属性设置器:
Public Property GridDataMode() As Mayfran.Base.BaseUtilities.FormMode Implements IGridDataMode.GridDataMode
Get
Return _GridDataMode
End Get
Set(ByVal arg As Mayfran.Base.BaseUtilities.FormMode)
'if mode is different from previous mode, then continue:
If _GridDataMode <> arg Then
_GridDataMode = arg
Select Case _GridDataMode
Case FormMode.Initial
'nothing to do here
Case FormMode.Dirty, FormMode.NewRecord
barButtonItemSave.Enabled = Editable
barButtonItemCancel.Enabled = True
barButtonItemSelectAll.Enabled = False
barButtonItemDelete.Enabled = False
barButtonItemPrint.Enabled = False
barButtonItemRefresh.Enabled = False
Case FormMode.RecordLoaded
barButtonItemSave.Enabled = False
barButtonItemCancel.Enabled = False
barButtonItemSelectAll.Enabled = True
barButtonItemDelete.Enabled = Editable
barButtonItemPrint.Enabled = True
barButtonItemRefresh.Enabled = True
Case Else
Exit Select
End Select
RaiseEvent GridModeChanged(arg)
End If
End Set
End Property