vb.net Code:
Public Class Form1
Private WithEvents inverseBinding As Binding
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
RadioButton1.DataBindings.Add("Checked", CheckBox1, "Checked")
inverseBinding = RadioButton2.DataBindings.Add("Checked", CheckBox1, "Checked")
End Sub
Private Sub invertBinding(sender As Object, e As ConvertEventArgs) Handles inverseBinding.Format,
inverseBinding.Parse
If TypeOf e.Value Is Boolean Then
e.Value = Not CBool(e.Value)
End If
End Sub
End Class
In this example, I have two
vb.net Code:
Public Class InverseBooleanBinding
Inherits Binding
Public Sub New(propertyName As String, dataSource As Object, dataMember As String)
MyBase.New(propertyName, dataSource, dataMember)
End Sub
Public Sub New(propertyName As String, dataSource As Object, dataMember As String, formattingEnabled As Boolean)
MyBase.New(propertyName, dataSource, dataMember, formattingEnabled)
End Sub
Public Sub New(propertyName As String, dataSource As Object, dataMember As String, formattingEnabled As Boolean, dataSourceUpdateMode As DataSourceUpdateMode)
MyBase.New(propertyName, dataSource, dataMember, formattingEnabled, dataSourceUpdateMode)
End Sub
Public Sub New(propertyName As String, dataSource As Object, dataMember As String, formattingEnabled As Boolean, dataSourceUpdateMode As DataSourceUpdateMode, nullValue As Object)
MyBase.New(propertyName, dataSource, dataMember, formattingEnabled, dataSourceUpdateMode, nullValue)
End Sub
Public Sub New(propertyName As String, dataSource As Object, dataMember As String, formattingEnabled As Boolean, dataSourceUpdateMode As DataSourceUpdateMode, nullValue As Object, formatString As String)
MyBase.New(propertyName, dataSource, dataMember, formattingEnabled, dataSourceUpdateMode, nullValue, formatString)
End Sub
Public Sub New(propertyName As String, dataSource As Object, dataMember As String, formattingEnabled As Boolean, dataSourceUpdateMode As DataSourceUpdateMode, nullValue As Object, formatString As String, formatInfo As IFormatProvider)
MyBase.New(propertyName, dataSource, dataMember, formattingEnabled, dataSourceUpdateMode, nullValue, formatString, formatInfo)
End Sub
Protected Overrides Sub OnFormat(cevent As ConvertEventArgs)
'Invert Boolean values.
If TypeOf cevent.Value Is Boolean Then
cevent.Value = Not CBool(cevent.Value)
End If
MyBase.OnFormat(cevent)
End Sub
Protected Overrides Sub OnParse(cevent As ConvertEventArgs)
'Invert Boolean values.
If TypeOf cevent.Value Is Boolean Then
cevent.Value = Not CBool(cevent.Value)
End If
MyBase.OnParse(cevent)
End Sub
End Class
I have mirrored every constructor of the base
vb.net Code:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
RadioButton1.DataBindings.Add("Checked", CheckBox1, "Checked")
RadioButton2.DataBindings.Add(New InverseBooleanBinding("Checked", CheckBox1, "Checked"))
End Sub
End Class
As you can see, we need to create the