有沒有真正的好策略可以根據多個條件啓用和禁用菜單項?基於多個屬性啓用/禁用菜單項的最佳方式
示例 - 我有一個帶有「保存」和「取消」工具欄菜單項(和其他)的可編輯網格。最初加載網格時,會檢查用戶是否有權編輯項目。如果用戶有權限,可以編輯網格。最初保存和取消被禁用,因爲它們不需要。如果用戶進行編輯,那麼我希望他們都被啓用。目前我用我所謂的'FormMode'屬性來做這件事。當用戶開始編輯時,它將表單/網格置於「髒」模式,並啓用「保存」和「取消」按鈕。如果任何可編輯的控件更改,它將此(FormMode)屬性設置爲Dirty。如果他們點擊保存或取消按鈕,則數據被保存並且按鈕被再次禁用(它們不是必需的)。
我的問題是,是否有更好,更優雅的方式來處理這種啓用/禁用通過使用事件或其他屬性?我在幾十個表單和網格上都有這個相同的場景,似乎應該有一個更簡單的方法來處理它。菜單項可以「識別」表單/網格狀態並自動響應?我可以重複使用多種形式嗎?
我不確定我的問題是否清楚 - 對不起,如果不是。但似乎我花了很多時間讓菜單項依據表單的「模式」正確運行。我喜歡只有在適當時才啓用它們。
這裏是屬性setter:
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
唉 - 我不能發表圖片要麼... :( – Jim
使用工具欄在編輯器中包括圖像 – StriplingWarrior
它不會讓我去救因爲我沒有。 10分... – Jim