簡単な VB .NET アプリケーションを作成しました。Property1 と Property2 の 2 つのプロパティを持つクラスにバインドされた 2 つの TextBox を持つ 1 つのフォーム。TextBox1 にテキストを入力すると、バインディング プロセスによって 2 番目のプロパティである Property2 が読み取られます。なんで?プロパティを変更すると、境界のあるすべてのコントロールがデータを更新することは望ましくありません。
コード:
' Class1.vb
Imports System.ComponentModel
Public Class Class1
Private property1Value As String
Public Property Property1() As String
Get
Return property1Value
End Get
Set(ByVal value As String)
property1Value = value
End Set
End Property
Private property2Value As String
Public Property Property2() As String
Get
Return property2Value
End Get
Set(ByVal value As String)
property2Value = value
End Set
End Property
End Class
' Form1.Designer.vb
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Form esegue l'override del metodo Dispose per pulire l'elenco dei componenti.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Richiesto da Progettazione Windows Form
Private components As System.ComponentModel.IContainer
'NOTA: la procedura che segue è richiesta da Progettazione Windows Form
'Può essere modificata in Progettazione Windows Form.
'Non modificarla nell'editor del codice.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.TextBox1 = New System.Windows.Forms.TextBox()
Me.TextBox2 = New System.Windows.Forms.TextBox()
Me.Class1BindingSource = New System.Windows.Forms.BindingSource(Me.components)
CType(Me.Class1BindingSource, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'TextBox1
'
Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.Class1BindingSource, "Property1", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged))
Me.TextBox1.Location = New System.Drawing.Point(12, 12)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(100, 22)
Me.TextBox1.TabIndex = 2
'
'TextBox2
'
Me.TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.Class1BindingSource, "Property2", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged))
Me.TextBox2.Location = New System.Drawing.Point(12, 40)
Me.TextBox2.Name = "TextBox2"
Me.TextBox2.Size = New System.Drawing.Size(100, 22)
Me.TextBox2.TabIndex = 3
'
'Class1BindingSource
'
Me.Class1BindingSource.DataSource = GetType(WindowsApplication1.Class1)
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(282, 255)
Me.Controls.Add(Me.TextBox2)
Me.Controls.Add(Me.TextBox1)
Me.Name = "Form1"
Me.Text = "Form1"
CType(Me.Class1BindingSource, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Class1BindingSource As System.Windows.Forms.BindingSource
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
Friend WithEvents TextBox2 As System.Windows.Forms.TextBox
End Class
' Form1.vb
Imports System.ComponentModel
Public Class Form1
Private Class1 As New Class1
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Class1.Property1 = "Prop1"
Class1.Property2 = "Prop2"
Class1BindingSource.DataSource = Class1
End Sub
End Class