我想創建一個自定義按鈕,僅當幾個布林值為真時才啟用。
因此,每次這些布林值中的一個更改其狀態時,也會檢查其他布林值的狀態,并因此設定按鈕的啟用狀態。
我猜布爾更改必須是某種火災事件,但我不知道該怎么做。
這是我的代碼(只有一個布林值,易于閱讀且......正確)。觸發與布林值更改相關聯的觸發事件,但按鈕的啟用狀態不會更改。
Public Class LaunchMassiveImportButton
Inherits Button
Public _blnIdGoodToGo As Boolean
Private _Enabled As Boolean
Property Enabled As Boolean
Get
Return Me.Enabled
End Get
Set(value As Boolean)
_Enabled = GetStateFromBoolean()
End Set
End Property
Private Function GetStateFromBoolean()
If blnIdGoodToGo = True Then
Return True
Else
Return False
End If
End Function
Public Property blnIdGoodToGo() As Boolean
Get
Return Me._blnIdGoodToGo
End Get
Set(ByVal value As Boolean)
If Me._blnIdGoodToGo <> value Then
Me._blnIdGoodToGo = value
Me.OnblnIdGoodToGoChangedChanged(EventArgs.Empty)
End If
End Set
End Property
Public Event blnIdGoodToGoChangedChanged As EventHandler
Protected Overridable Sub OnblnIdGoodToGoChangedChanged(ByVal e As EventArgs)
RaiseEvent blnIdGoodToGoChangedChanged(Me, e)
Me.Enabled = GetStateFromBoolean()
End Sub
End Class
uj5u.com熱心網友回復:
你非常接近。這是基本結構:
Public Class ButtonEx
Inherits Button
Private _flag1 As Boolean
Private _flag2 As Boolean
Public Property Flag1 As Boolean
Get
Return _flag1
End Get
Set
If _flag1 <> Value Then
_flag1 = Value
OnFlag1Changed(EventArgs.Empty)
End If
End Set
End Property
Public Property Flag2 As Boolean
Get
Return _flag2
End Get
Set
If _flag2 <> Value Then
_flag2 = Value
OnFlag2Changed(EventArgs.Empty)
End If
End Set
End Property
Public Event Flag1Changed As EventHandler
Public Event Flag2Changed As EventHandler
Protected Overridable Sub OnFlag1Changed(e As EventArgs)
RaiseEvent Flag1Changed(Me, e)
SetEnabledState()
End Sub
Protected Overridable Sub OnFlag2Changed(e As EventArgs)
RaiseEvent Flag2Changed(Me, e)
SetEnabledState()
End Sub
Private Sub SetEnabledState()
Enabled = Flag1 AndAlso Flag2
End Sub
End Class
請注意,如果您希望能夠從外部處理這些事件,則只需要這些事件。如果你不想這樣,你可以從屬性中呼叫私有方法:
Public Class ButtonEx
Inherits Button
Private _flag1 As Boolean
Private _flag2 As Boolean
Public Property Flag1 As Boolean
Get
Return _flag1
End Get
Set
If _flag1 <> Value Then
_flag1 = Value
SetEnabledState()
End If
End Set
End Property
Public Property Flag2 As Boolean
Get
Return _flag2
End Get
Set
If _flag2 <> Value Then
_flag2 = Value
SetEnabledState()
End If
End Set
End Property
Private Sub SetEnabledState()
Enabled = Flag1 AndAlso Flag2
End Sub
End Class
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/452659.html
上一篇:如何用字串c#求平均值
