Assembly : System (dans system.dll)
Syntaxe<SerializableAttribute> _ Public Class BindingList(Of T) Inherits Collection(Of T) Implements IBindingList, IList, ICollection, IEnumerable, _ ICancelAddNew, IRaiseItemChangedEvents
Dim instance As BindingList(Of T)
[SerializableAttribute] public class BindingList<T> : Collection<T>, IBindingList, IList, ICollection, IEnumerable, ICancelAddNew, IRaiseItemChangedEvents
[SerializableAttribute] generic<typename T> public ref class BindingList : public Collection<T>, IBindingList, IList, ICollection, IEnumerable, ICancelAddNew, IRaiseItemChangedEvents
J# prend en charge l'utilisation de types et de méthodes génériques mais pas la déclaration de nouveaux types et de méthodes génériques.
JScript ne prend pas en charge les types et les méthodes génériques.
NotesLa classe BindingList peut être utilisée comme classe de base pour créer un mécanisme de liaison de données bidirectionnelle. BindingList fournit une implémentation générique concrète de l'interface IBindingList. Il s'agit d'une alternative à l'implémentation de l'interface IBindingList complète qui peut être difficile à cause de l'interaction subtile entre IBindingList, IEditableObjectet le CurrencyManager associé. Toutefois, le programmeur de solutions classiques utilisera une classe qui fournit des fonctionnalités de liaison de données, telles que BindingSource, au lieu d'utiliser directement BindingList.
BindingList prend en charge des instances créées par une fabrique via la méthode AddNew extensible. Ce même type d'extensibilité se trouve également dans d'autres classes, telles que BindingSource. En outre, étant donné que cette classe implémente l'interface ICancelAddNew, elle permet des validations ou des restaurations transactionnelles du nouvel élément via les méthodes EndNew et CancelNew.
Remarque |
|---|
| L'attribut HostProtectionAttribute appliqué à cette classe a la valeur de propriété Resources suivante : SharedState. HostProtectionAttribute n'affecte pas les applications bureautiques (qui sont généralement démarrées en double-cliquant sur une icône, en tapant une commande ou en entrant une URL dans un navigateur). Pour plus d'informations, consultez la classe HostProtectionAttribute ou Attributs de programmation et de protection des hôtes SQL Server. |
ExempleL'exemple de code suivant illustre la création d'une liaison avec un composant BindingList contenant un objet métier. Il s'agit d'un exemple complet qui contient une méthode Main.
Option Explicit On Option Strict On Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Drawing Imports System.Text Imports System.Windows.Forms Class Form1 Inherits Form Private textBox2 As TextBox Private listBox1 As ListBox Private WithEvents button1 As Button Private textBox1 As TextBox Private randomNumber As New Random() Public Sub New() Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.textBox1 = New System.Windows.Forms.TextBox() Me.textBox2 = New System.Windows.Forms.TextBox() Me.listBox1 = New System.Windows.Forms.ListBox() Me.button1 = New System.Windows.Forms.Button() Me.textBox1.Location = New System.Drawing.Point(169, 26) Me.textBox1.Size = New System.Drawing.Size(100, 20) Me.textBox1.Text = "Bracket" Me.textBox2.Location = New System.Drawing.Point(169, 57) Me.textBox2.ReadOnly = True Me.textBox2.Size = New System.Drawing.Size(100, 20) Me.textBox2.Text = "4343" Me.listBox1.FormattingEnabled = True Me.listBox1.Location = New System.Drawing.Point(12, 12) Me.listBox1.Size = New System.Drawing.Size(120, 95) Me.button1.Location = New System.Drawing.Point(180, 83) Me.button1.Size = New System.Drawing.Size(75, 23) Me.button1.Text = "Add New Item" Me.ClientSize = New System.Drawing.Size(292, 266) Me.Controls.Add(Me.button1) Me.Controls.Add(Me.listBox1) Me.Controls.Add(Me.textBox2) Me.Controls.Add(Me.textBox1) Me.Text = "Parts Form" AddHandler Me.Load, AddressOf Form1_Load End Sub 'New Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) InitializeListOfParts() listBox1.DataSource = listOfParts listBox1.DisplayMember = "PartName" End Sub ' Declare a new BindingListOfT with the Part business object. Private WithEvents listOfParts As BindingList(Of Part) Private Sub InitializeListOfParts() ' Create the new BindingList of Part type. listOfParts = New BindingList(Of Part) ' Allow new parts to be added, but not removed once committed. listOfParts.AllowNew = True listOfParts.AllowRemove = False ' Raise ListChanged events when new parts are added. listOfParts.RaiseListChangedEvents = True ' Do not allow parts to be edited. listOfParts.AllowEdit = False ' Add a couple of parts to the list. listOfParts.Add(New Part("Widget", 1234)) listOfParts.Add(New Part("Gadget", 5647)) End Sub ' Create a new part from the text in the two text boxes. Private Sub listOfParts_AddingNew(ByVal sender As Object, _ ByVal e As AddingNewEventArgs) Handles listOfParts.AddingNew e.NewObject = New Part(textBox1.Text, Integer.Parse(textBox2.Text)) End Sub ' Add the new part unless the part number contains ' spaces. In that case cancel the add. Private Sub button1_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles button1.Click Dim newPart As Part = listOfParts.AddNew() If newPart.PartName.Contains(" ") Then MessageBox.Show("Part names cannot contain spaces.") listOfParts.CancelNew(listOfParts.IndexOf(newPart)) Else textBox2.Text = randomNumber.Next(9999).ToString() textBox1.Text = "Enter part name" End If End Sub <STAThread()> _ Shared Sub Main() Application.EnableVisualStyles() Application.Run(New Form1()) End Sub End Class ' A simple business object for example purposes. Public Class Part Private name As String Private number As Integer Public Sub New() End Sub Public Sub New(ByVal nameForPart As String, _ ByVal numberForPart As Integer) PartName = nameForPart PartNumber = numberForPart End Sub Public Property PartName() As String Get Return name End Get Set(ByVal value As String) name = Value End Set End Property Public Property PartNumber() As Integer Get Return number End Get Set(ByVal value As Integer) number = Value End Set End Property End Class
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Text; using System.Windows.Forms; namespace BindingListOfTExamples { public partial class Form1 : Form { private TextBox textBox2; private ListBox listBox1; private Button button1; private TextBox textBox1; Random randomNumber = new Random(); public Form1() { this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.textBox1 = new System.Windows.Forms.TextBox(); this.textBox2 = new System.Windows.Forms.TextBox(); this.listBox1 = new System.Windows.Forms.ListBox(); this.button1 = new System.Windows.Forms.Button(); this.textBox1.Location = new System.Drawing.Point(169, 26); this.textBox1.Size = new System.Drawing.Size(100, 20); this.textBox1.Text = "Bracket"; this.textBox2.Location = new System.Drawing.Point(169, 57); this.textBox2.ReadOnly = true; this.textBox2.Size = new System.Drawing.Size(100, 20); this.textBox2.Text = "4343"; this.listBox1.FormattingEnabled = true; this.listBox1.Location = new System.Drawing.Point(12, 12); this.listBox1.Size = new System.Drawing.Size(120, 95); this.button1.Location = new System.Drawing.Point(180, 83); this.button1.Size = new System.Drawing.Size(75, 23); this.button1.Text = "Add New Item"; this.button1.Click += new System.EventHandler(this.button1_Click); this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.button1); this.Controls.Add(this.listBox1); this.Controls.Add(this.textBox2); this.Controls.Add(this.textBox1); this.Text = "Parts Form"; this.Load += new EventHandler(Form1_Load); } void Form1_Load(object sender, EventArgs e) { InitializeListOfParts(); listBox1.DataSource = listOfParts; listBox1.DisplayMember = "PartName"; listOfParts.AddingNew += new AddingNewEventHandler(listOfParts_AddingNew); listOfParts.ListChanged += new ListChangedEventHandler(listOfParts_ListChanged); } // Declare a new BindingListOfT with the Part business object. BindingList<Part> listOfParts; private void InitializeListOfParts() { // Create the new BindingList of Part type. listOfParts = new BindingList<Part>(); // Allow new parts to be added, but not removed once committed. listOfParts.AllowNew = true; listOfParts.AllowRemove = false; // Raise ListChanged events when new parts are added. listOfParts.RaiseListChangedEvents = true; // Do not allow parts to be edited. listOfParts.AllowEdit = false; // Add a couple of parts to the list. listOfParts.Add(new Part("Widget", 1234)); listOfParts.Add(new Part("Gadget", 5647)); } // Create a new part from the text in the two text boxes. void listOfParts_AddingNew(object sender, AddingNewEventArgs e) { e.NewObject = new Part(textBox1.Text, int.Parse(textBox2.Text)); } // Add the new part unless the part number contains // spaces. In that case cancel the add. private void button1_Click(object sender, EventArgs e) { Part newPart = listOfParts.AddNew(); if (newPart.PartName.Contains(" ")) { MessageBox.Show("Part names cannot contain spaces."); listOfParts.CancelNew(listOfParts.IndexOf(newPart)); } else { textBox2.Text = randomNumber.Next(9999).ToString(); textBox1.Text = "Enter part name"; } } void listOfParts_ListChanged(object sender, ListChangedEventArgs e) { MessageBox.Show(e.ListChangedType.ToString()); } [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } } // A simple business object for example purposes. public class Part { private string name; private int number; public Part() { } public Part(string nameForPart, int numberForPart) { PartName = nameForPart; PartNumber = numberForPart; } public string PartName { get { return name; } set { name = value; } } public int PartNumber { get { return number; } set { number = value; } } } }
Sécurité des threads
Plates-formesWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version
Remarque
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ