1

簡単な 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
4

0 に答える 0