Assembly : System (dans system.dll)
SyntaxePublic Interface IBindingList Inherits IList, ICollection, IEnumerable
Dim instance As IBindingList
public interface IBindingList : IList, ICollection, IEnumerable
public interface class IBindingList : IList, ICollection, IEnumerable
public interface IBindingList extends IList, ICollection,
IEnumerable
public interface IBindingList extends IList, ICollection, IEnumerable
NotesCette interface est implémentée par la classe DataView. L'implémentation d'une méthode doit posséder le même comportement que l'implémentation de cette méthode dans la classe DataView.
Lorsque vous appelez les méthodes ApplySort ou RemoveSort, vous devez déclencher un événement ListChanged avec l'énumération Reset.
Lorsque vous appelez la méthode AddNew, vous devez déclencher un événement ListChanged avec l'énumération ItemAdded comportant l'index approprié. La ligne ajoutée présente un état permettant de supprimer la nouvelle ligne lorsqu'un utilisateur appuie sur la touche ÉCHAP dans un contrôle DataGridView. Le déclenchement de l'événement ListChanged avec l'énumération ItemAdded une seconde fois sur cette ligne indique que l'élément constitue à présent une ligne ne présentant pas l'état « nouveau ».
Lorsque vous supprimez un élément ou que vous appelez la méthode CancelEdit sur une nouvelle ligne (si cette ligne implémente IEditableObject), vous devez déclencher un événement ListChanged avec l'énumération ItemDeleted comportant l'index approprié.
ExempleL'exemple suivant fournit une implémentation simple de l'interface IBindingList. La classe CustomerList stocke des informations client dans une liste. Cet exemple suppose que vous avez utilisé la classe Customer qui figure dans l'exemple dans la classe IEditableObject.
Public Class CustomersList Inherits CollectionBase Implements IBindingList Private resetEvent As New ListChangedEventArgs(ListChangedType.Reset, -1) Private onListChanged1 As ListChangedEventHandler Public Sub LoadCustomers() Dim l As IList = CType(Me, IList) l.Add(ReadCustomer1()) l.Add(ReadCustomer2()) OnListChanged(resetEvent) End Sub Default Public Property Item(ByVal index As Integer) As Customer Get Return CType(List(index), Customer) End Get Set(ByVal Value As Customer) List(index) = Value End Set End Property Public Function Add(ByVal value As Customer) As Integer Return List.Add(value) End Function Public Function AddNew2() As Customer Return CType(CType(Me, IBindingList).AddNew(), Customer) End Function Public Sub Remove(ByVal value As Customer) List.Remove(value) End Sub Protected Overridable Sub OnListChanged(ByVal ev As ListChangedEventArgs) If Not (onListChanged1 Is Nothing) Then onListChanged1(Me, ev) End If End Sub Protected Overrides Sub OnClear() Dim c As Customer For Each c In List c.parent = Nothing Next c End Sub Protected Overrides Sub OnClearComplete() OnListChanged(resetEvent) End Sub Protected Overrides Sub OnInsertComplete(ByVal index As Integer, ByVal value As Object) Dim c As Customer = CType(value, Customer) c.parent = Me OnListChanged(New ListChangedEventArgs(ListChangedType.ItemAdded, index)) End Sub Protected Overrides Sub OnRemoveComplete(ByVal index As Integer, ByVal value As Object) Dim c As Customer = CType(value, Customer) c.parent = Me OnListChanged(New ListChangedEventArgs(ListChangedType.ItemDeleted, index)) End Sub Protected Overrides Sub OnSetComplete(ByVal index As Integer, ByVal oldValue As Object, ByVal newValue As Object) If oldValue <> newValue Then Dim oldcust As Customer = CType(oldValue, Customer) Dim newcust As Customer = CType(newValue, Customer) oldcust.parent = Nothing newcust.parent = Me OnListChanged(New ListChangedEventArgs(ListChangedType.ItemAdded, index)) End If End Sub ' Called by Customer when it changes. Friend Sub CustomerChanged(ByVal cust As Customer) Dim index As Integer = List.IndexOf(cust) OnListChanged(New ListChangedEventArgs(ListChangedType.ItemChanged, index)) End Sub ' Implements IBindingList. ReadOnly Property AllowEdit() As Boolean Implements IBindingList.AllowEdit Get Return True End Get End Property ReadOnly Property AllowNew() As Boolean Implements IBindingList.AllowNew Get Return True End Get End Property ReadOnly Property AllowRemove() As Boolean Implements IBindingList.AllowRemove Get Return True End Get End Property ReadOnly Property SupportsChangeNotification() As Boolean Implements IBindingList.SupportsChangeNotification Get Return True End Get End Property ReadOnly Property SupportsSearching() As Boolean Implements IBindingList.SupportsSearching Get Return False End Get End Property ReadOnly Property SupportsSorting() As Boolean Implements IBindingList.SupportsSorting Get Return False End Get End Property ' Events. Public Event ListChanged As ListChangedEventHandler Implements IBindingList.ListChanged ' Methods. Function AddNew() As Object Implements IBindingList.AddNew Dim c As New Customer(Me.Count.ToString()) List.Add(c) Return c End Function ' Unsupported properties. ReadOnly Property IsSorted() As Boolean Implements IBindingList.IsSorted Get Throw New NotSupportedException() End Get End Property ReadOnly Property SortDirection() As ListSortDirection Implements IBindingList.SortDirection Get Throw New NotSupportedException() End Get End Property ReadOnly Property SortProperty() As PropertyDescriptor Implements IBindingList.SortProperty Get Throw New NotSupportedException() End Get End Property ' Unsupported Methods. Sub AddIndex(ByVal prop As PropertyDescriptor) Implements IBindingList.AddIndex Throw New NotSupportedException() End Sub Sub ApplySort(ByVal prop As PropertyDescriptor, ByVal direction As ListSortDirection) Implements IBindingList.ApplySort Throw New NotSupportedException() End Sub Function Find(ByVal prop As PropertyDescriptor, ByVal key As Object) As Integer Implements IBindingList.Find Throw New NotSupportedException() End Function Sub RemoveIndex(ByVal prop As PropertyDescriptor) Implements IBindingList.RemoveIndex Throw New NotSupportedException() End Sub Sub RemoveSort() Implements IBindingList.RemoveSort Throw New NotSupportedException() End Sub ' Worker functions to populate the list with data. Private Shared Function ReadCustomer1() As Customer Dim cust As New Customer("536-45-1245") cust.FirstName = "Jo" cust.LastName = "Brown" Return cust End Function Private Shared Function ReadCustomer2() As Customer Dim cust As New Customer("246-12-5645") cust.FirstName = "Robert" cust.LastName = "Brown" Return cust End Function End Class
public class CustomersList : CollectionBase, IBindingList { private ListChangedEventArgs resetEvent = new ListChangedEventArgs(ListChangedType.Reset, -1); private ListChangedEventHandler onListChanged; public void LoadCustomers() { IList l = (IList)this; l.Add(ReadCustomer1()); l.Add(ReadCustomer2()); OnListChanged(resetEvent); } public Customer this[int index] { get { return (Customer)(List[index]); } set { List[index] = value; } } public int Add (Customer value) { return List.Add(value); } public Customer AddNew() { return (Customer)((IBindingList)this).AddNew(); } public void Remove (Customer value) { List.Remove(value); } protected virtual void OnListChanged(ListChangedEventArgs ev) { if (onListChanged != null) { onListChanged(this, ev); } } protected override void OnClear() { foreach (Customer c in List) { c.Parent = null; } } protected override void OnClearComplete() { OnListChanged(resetEvent); } protected override void OnInsertComplete(int index, object value) { Customer c = (Customer)value; c.Parent = this; OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index)); } protected override void OnRemoveComplete(int index, object value) { Customer c = (Customer)value; c.Parent = this; OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, index)); } protected override void OnSetComplete(int index, object oldValue, object newValue) { if (oldValue != newValue) { Customer oldcust = (Customer)oldValue; Customer newcust = (Customer)newValue; oldcust.Parent = null; newcust.Parent = this; OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index)); } } // Called by Customer when it changes. internal void CustomerChanged(Customer cust) { int index = List.IndexOf(cust); OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, index)); } // Implements IBindingList. bool IBindingList.AllowEdit { get { return true ; } } bool IBindingList.AllowNew { get { return true ; } } bool IBindingList.AllowRemove { get { return true ; } } bool IBindingList.SupportsChangeNotification { get { return true ; } } bool IBindingList.SupportsSearching { get { return false ; } } bool IBindingList.SupportsSorting { get { return false ; } } // Events. public event ListChangedEventHandler ListChanged { add { onListChanged += value; } remove { onListChanged -= value; } } // Methods. object IBindingList.AddNew() { Customer c = new Customer(this.Count.ToString()); List.Add(c); return c; } // Unsupported properties. bool IBindingList.IsSorted { get { throw new NotSupportedException(); } } ListSortDirection IBindingList.SortDirection { get { throw new NotSupportedException(); } } PropertyDescriptor IBindingList.SortProperty { get { throw new NotSupportedException(); } } // Unsupported Methods. void IBindingList.AddIndex(PropertyDescriptor property) { throw new NotSupportedException(); } void IBindingList.ApplySort(PropertyDescriptor property, ListSortDirection direction) { throw new NotSupportedException(); } int IBindingList.Find(PropertyDescriptor property, object key) { throw new NotSupportedException(); } void IBindingList.RemoveIndex(PropertyDescriptor property) { throw new NotSupportedException(); } void IBindingList.RemoveSort() { throw new NotSupportedException(); } // Worker functions to populate the list with data. private static Customer ReadCustomer1() { Customer cust = new Customer("536-45-1245"); cust.FirstName = "Jo"; cust.LastName = "Brown"; return cust; } private static Customer ReadCustomer2() { Customer cust = new Customer("246-12-5645"); cust.FirstName = "Robert"; cust.LastName = "Brown"; return cust; } }
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
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ