Это называется деструктурированием . Вы можете найти наибольшую информацию в MDN: Назначение деструктурирования .
Обсуждение стандартов ECMAScript можно найти на в их wiki-странице , также интересно это сообщение в блоге в dailyjs.
Подобно тому, что Реза Агаэй описал , применил вручную .
Описание процедуры:
List(Of Form)
с именем ChildForms
. DataSource
, здесь DataTable
(названный BindingDataTable
), используемый для предоставления значения по умолчанию для текстовых полей в 2 различных дочерних формах TextBoxBindings
), который обеспечит логику привязки / поддержку элементов управления. DataSource
из BindingSource
в DataTable для соединения данных. List(Of Form)
для удаления дочерних форм из TabControl при необходимости. Private ChildForms As List(Of Form)
Private TextBoxBindings As BindingSource
Private BindingDataTable As DataTable
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
BindingDataTable = New DataTable("TextSource")
BindingDataTable.Columns.Add(New DataColumn("TextValue", GetType(String)))
Dim row As DataRow = BindingDataTable.NewRow()
row.ItemArray = New String() {"Default text"}
BindingDataTable.Rows.Add(row)
TextBoxBindings = New BindingSource()
TextBoxBindings.DataSource = BindingDataTable
ChildForms = New List(Of Form)
Dim ch1, ch2 As New ChildForm With {
.FormBorderStyle = FormBorderStyle.None,
.Location = Point.Empty,
.Size = TabPage1.Size,
.TopLevel = False
}
ChildForms.AddRange({ch1, ch2})
For Each frm As Form In ChildForms
Dim txt As TextBox = DirectCast(frm.Controls.Find("TextBox1", False)(0), TextBox)
Dim txtBind = New Binding("Text", TextBoxBindings, "TextValue", True, DataSourceUpdateMode.OnPropertyChanged)
AddHandler txtBind.Parse, AddressOf Me.OnBindingParse
txt.DataBindings.Add(txtBind)
Next
TabPage1.Controls.Add(ChildForms(0))
TabPage2.Controls.Add(ChildForms(1))
ChildForms.ForEach(Sub(f) f.Show())
End Sub
Friend Sub OnBindingParse(sender As Object, e As ConvertEventArgs)
If e.DesiredType Is GetType(String) Then
TextBoxBindings.CurrencyManager.Refresh()
End If
End Sub
Private Sub btnClearChilds_Click(sender As Object, e As EventArgs) Handles btnClearChilds.Click
For i As Integer = 0 To ChildForms.Count - 1
Dim txt As TextBox = DirectCast(ChildForms(i).Controls.Find("TextBox1", False)(0), TextBox)
RemoveHandler txt.DataBindings.Item("Text").Parse, AddressOf Me.OnBindingParse
ChildForms(i).Dispose()
Next
TextBoxBindings.Dispose()
BindingDataTable.Dispose()
End Sub
Пример результата:
Вы можете использовать привязку данных к настройкам приложения или привязку данных к одному экземпляру любого другого класса, который поддерживает двустороннюю привязку данных:
Открыть Настройки. файл настроек .
Он находится в узле «Мой проект» в обозревателе решений, если вы решите показать все файлы из панели инструментов обозревателя решений. Вы также можете открыть его, щелкнув правой кнопкой мыши на узле проекта, выбрав «Свойства» и выбрав вкладку «Настройки».
Добавьте новое свойство настройки и назовите его как-нибудь, например Setting1 , и пусть тип будет строковым и при желании назначьте значение по умолчанию.
TextBox
, в котором вы хотите показать значение. Text
и в качестве значения выберите свойство настройки, которое вы создали на шаге 2. Когда вы запускаете приложение, когда вы вводите любой из элементов управления TextBox
, которые привязаны к значению настройки, все связанные текстовые поля будут обновлены немедленно.