1
我創建了一個自定義控件,它由兩個單選按鈕組成,其外觀設置爲「按鈕」。這個控件的作用就像兩個切換按鈕,帶有「開」切換按鈕和「關」切換按鈕。我有一個公共布爾屬性「isAOn」,用於設置兩個按鈕的狀態,我希望能夠將此屬性綁定到布爾值。我導入了組件模型並設置了用戶控制和綁定
現在,當我將其添加到某個布爾值的窗體中時,它似乎並沒有更新該按鈕按下時該類的布爾值。
建議如何解決這個問題和對課堂設計的建設性批評是值得歡迎的。
謝謝!
下面是代碼:
Imports System.ComponentModel
''#
<DefaultBindingProperty("isAOn")> _
Public Class ToggleButtons
Private _isAOn As Boolean
Private _aText As String
Private _bText As String
Private _aOnColor As Color
Private _aOffColor As Color
Private _bOnColor As Color
Private _bOffColor As Color
Public Sub New()
''# This call is required by the Windows Form Designer.
InitializeComponent()
''# Add any initialization after the InitializeComponent() call.
aOffColor = Color.LightGreen
aOnColor = Color.DarkGreen
bOffColor = Color.FromArgb(255, 192, 192)
bOnColor = Color.Maroon
isAOn = False
aText = "A"
bText = "B"
End Sub
Private Sub configButtons()
If _isAOn Then
rbA.Checked = True
rbA.BackColor = _aOnColor
rbB.Checked = False
rbB.BackColor = _bOffColor
Else
rbA.Checked = False
rbA.BackColor = _aOffColor
rbB.Checked = True
rbB.BackColor = _bOnColor
End If
rbA.Text = aText
rbB.Text = bText
End Sub
Public Property isAOn() As Boolean
Get
Return _isAOn
End Get
Set(ByVal value As Boolean)
_isAOn = value
configButtons()
End Set
End Property
Private Sub rbOn_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbA.CheckedChanged
isAOn = rbA.Checked
End Sub
Private Sub rbOff_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbB.CheckedChanged
isAOn = Not rbB.Checked
End Sub
Public Property aText() As String
Get
Return _aText
End Get
Set(ByVal value As String)
_aText = value
End Set
End Property
Public Property bText() As String
Get
Return _bText
End Get
Set(ByVal value As String)
_bText = value
End Set
End Property
Public Property aOnColor() As Color
Get
Return _aOnColor
End Get
Set(ByVal value As Color)
_aOnColor = value
End Set
End Property
Public Property aOffColor() As Color
Get
Return _aOffColor
End Get
Set(ByVal value As Color)
_aOffColor = value
End Set
End Property
Public Property bOnColor() As Color
Get
Return _bOnColor
End Get
Set(ByVal value As Color)
_bOnColor = value
End Set
End Property
Public Property bOffColor() As Color
Get
Return _bOffColor
End Get
Set(ByVal value As Color)
_bOffColor = value
End Set
End Property
End Class
謝謝,但我認爲還需要做更多的事情,而不僅僅是添加事件並提升它。 應該如何處理? 有沒有辦法自動保持這種雙向綁定? – ChrisAU 2010-03-11 02:28:02
不需要。您需要做的就是創建一個正確名稱和類型的事件('EventHandler'),並在值發生更改時觸發它。 – SLaks 2010-03-11 02:29:32
SLaks,我添加了一個事件「Public Event isAOnChanged As EventHandler」,並在屬性設置器中引發了這個事件,但對象中綁定的布爾屬性仍然沒有得到任何活動。 – ChrisAU 2010-03-11 02:36:48