Я пытаюсь создать пользовательский элемент управления, унаследовав его, чтобы расширить его функциональность. Я создал простой тест для воспроизведения этой проблемы. Моя проблема заключается в том, что привязка данных сериализуется в файл designer.vb.
Есть ли способ предотвратить это? Пожалуйста, смотрите мой пример кода ниже.
Public Class CustomTextBox
Inherits Windows.Forms.TextBox
Implements System.ComponentModel.INotifyPropertyChanged
Private _myCustomProperty As Boolean
Public Sub New()
Me.DataBindings.Add(New Windows.Forms.Binding("MyCustomProperty", My.Settings, "TestBoolean", True, Windows.Forms.DataSourceUpdateMode.OnPropertyChanged))
End Sub
Public Event PropertyChanged As ComponentModel.PropertyChangedEventHandler Implements ComponentModel.INotifyPropertyChanged.PropertyChanged
<ComponentModel.Browsable(False)>
<ComponentModel.Bindable(True)>
<ComponentModel.DesignerSerializationVisibility(ComponentModel.DesignerSerializationVisibility.Hidden)>
Public Property MyCustomProperty As Boolean
Get
Return Me._myCustomProperty
End Get
Set
If Me._myCustomProperty = Value Then
Return
End If
Me._myCustomProperty = Value
RaiseEvent PropertyChanged(Me, New ComponentModel.PropertyChangedEventArgs(NameOf(Me.MyCustomProperty)))
End Set
End Property
End Class
Когда я добавляю CustomTextBox
к форме, VisualStudio автоматически добавляет следующее в файл designer.vb формы.
'
'CustomTextBox1
'
MySettings1.SettingsKey = ""
MySettings1.TestBoolean = False
Me.CustomTextBox1.DataBindings.Add(New System.Windows.Forms.Binding("MyCustomProperty", MySettings1, "TestBoolean", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged))
Me.CustomTextBox1.Location = New System.Drawing.Point(483, 13)
Me.CustomTextBox1.Name = "CustomTextBox1"
Me.CustomTextBox1.Size = New System.Drawing.Size(100, 26)
Me.CustomTextBox1.TabIndex = 3
Когда я Запустите форму, я получу исключение.
Я понимаю, почему я получаю исключение. Designer.vb создает привязку данных, а CustomTextBox также пытается создать привязку данных. Я пытался добавить Me.Databindings.Clear()
перед добавлением привязки данных в унаследованном элементе управления.
Есть ли способ предотвратить добавление привязки данных в файл desginer.vb?