Partage via


BindingSource Classe

Définition

Encapsule la source de données pour un formulaire.

public ref class BindingSource : System::ComponentModel::Component, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ICancelAddNew, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList, System::Windows::Forms::ICurrencyManagerProvider
public ref class BindingSource : System::ComponentModel::Component, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ICancelAddNew, System::ComponentModel::ISupportInitialize, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList, System::Windows::Forms::ICurrencyManagerProvider
[System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
public class BindingSource : System.ComponentModel.Component, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ICancelAddNew, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList, System.Windows.Forms.ICurrencyManagerProvider
[System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
public class BindingSource : System.ComponentModel.Component, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ICancelAddNew, System.ComponentModel.ISupportInitialize, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList, System.Windows.Forms.ICurrencyManagerProvider
[<System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")>]
type BindingSource = class
    inherit Component
    interface IBindingListView
    interface IBindingList
    interface IList
    interface ICollection
    interface IEnumerable
    interface ITypedList
    interface ICancelAddNew
    interface ISupportInitializeNotification
    interface ISupportInitialize
    interface ICurrencyManagerProvider
[<System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")>]
type BindingSource = class
    inherit Component
    interface IBindingListView
    interface ICollection
    interface IEnumerable
    interface IList
    interface IBindingList
    interface ITypedList
    interface ICancelAddNew
    interface ISupportInitializeNotification
    interface ISupportInitialize
    interface ICurrencyManagerProvider
Public Class BindingSource
Inherits Component
Implements IBindingListView, ICancelAddNew, ICurrencyManagerProvider, IList, ISupportInitializeNotification, ITypedList
Public Class BindingSource
Inherits Component
Implements IBindingListView, ICancelAddNew, ICurrencyManagerProvider, IList, ISupportInitialize, ISupportInitializeNotification, ITypedList
Héritage
Attributs
Implémente

Exemples

L’exemple de code suivant illustre un ListBox lié à un BindingSource. est BindingSource lié à un BindingList<T> qui contient une liste de polices.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace BindingSourceExamples
{
    public class Form1 : Form
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }

        public Form1()
        {
            this.Load += new EventHandler(Form1_Load);
        }

        private TextBox textBox1;
        private Button button1;
        private ListBox listBox1;
       
        private BindingSource binding1;
        void Form1_Load(object sender, EventArgs e)
        {
            listBox1 = new ListBox();
            textBox1 = new TextBox();
            binding1 = new BindingSource();
            button1 = new Button();
            listBox1.Location = new Point(140, 25);
            listBox1.Size = new Size(123, 160);
            textBox1.Location = new Point(23, 70);
            textBox1.Size = new Size(100, 20);
            textBox1.Text = "Wingdings";
            button1.Location = new Point(23, 25);
            button1.Size = new Size(75, 23);
            button1.Text = "Search";
            button1.Click += new EventHandler(this.button1_Click);
            this.ClientSize = new Size(292, 266);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.listBox1);

            MyFontList fonts = new MyFontList();
            for (int i = 0; i < FontFamily.Families.Length; i++)
            {
                if (FontFamily.Families[i].IsStyleAvailable(FontStyle.Regular))
                    fonts.Add(new Font(FontFamily.Families[i], 11.0F, FontStyle.Regular));
            }
            binding1.DataSource = fonts;
            listBox1.DataSource = binding1;
            listBox1.DisplayMember = "Name";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (binding1.SupportsSearching != true)
            {
                MessageBox.Show("Cannot search the list.");
            }
            else
            {
                int foundIndex = binding1.Find("Name", textBox1.Text);
                if (foundIndex > -1)
                    listBox1.SelectedIndex = foundIndex;
                else
                    MessageBox.Show("Font was not found.");
            }
        }
    }
    
    public class MyFontList : BindingList<Font>
    {

        protected override bool SupportsSearchingCore
        {
            get { return true; }
        }
        protected override int FindCore(PropertyDescriptor prop, object key)
        {
            // Ignore the prop value and search by family name.
            for (int i = 0; i < Count; ++i)
            {
                if (Items[i].FontFamily.Name.ToLower() == ((string)key).ToLower())
                    return i;
            }
            return -1;
        }
    }
}
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Public Class Form1
    Inherits Form

    <STAThread()> _
    Shared Sub Main()
        Application.EnableVisualStyles()
        Application.Run(New Form1())

    End Sub

    Public Sub New()

    End Sub

    Private textBox1 As TextBox
    Private WithEvents button1 As Button
    Private listBox1 As ListBox
    Private components As IContainer
    Private binding1 As BindingSource

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        listBox1 = New ListBox()
        textBox1 = New TextBox()
        binding1 = New BindingSource()
        button1 = New Button()
        listBox1.Location = New Point(140, 25)
        listBox1.Size = New Size(123, 160)
        textBox1.Location = New Point(23, 70)
        textBox1.Size = New Size(100, 20)
        textBox1.Text = "Wingdings"
        button1.Location = New Point(23, 25)
        button1.Size = New Size(75, 23)
        button1.Text = "Search"
        Me.ClientSize = New Size(292, 266)
        Me.Controls.Add(Me.button1)
        Me.Controls.Add(Me.textBox1)
        Me.Controls.Add(Me.listBox1)

        Dim fonts As New MyFontList()
        Dim i As Integer
        For i = 0 To FontFamily.Families.Length - 1
            If FontFamily.Families(i).IsStyleAvailable(FontStyle.Regular) Then
                fonts.Add(New Font(FontFamily.Families(i), 11.0F, FontStyle.Regular))
            End If
        Next i
        binding1.DataSource = fonts
        listBox1.DataSource = binding1
        listBox1.DisplayMember = "Name"

    End Sub
    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles button1.Click

        If binding1.SupportsSearching <> True Then
            MessageBox.Show("Cannot search the list.")
        Else
            Dim foundIndex As Integer = binding1.Find("Name", textBox1.Text)
            If foundIndex > -1 Then
                listBox1.SelectedIndex = foundIndex
            Else
                MessageBox.Show("Font was not found.")
            End If
        End If

    End Sub
End Class

Public Class MyFontList
    Inherits BindingList(Of Font)

    Protected Overrides ReadOnly Property SupportsSearchingCore() As Boolean
        Get
            Return True
        End Get
    End Property
    
    Protected Overrides Function FindCore(ByVal prop As PropertyDescriptor, _
        ByVal key As Object) As Integer
        ' Ignore the prop value and search by family name.
        Dim i As Integer
        While i < Count
            If Items(i).FontFamily.Name.ToLower() = CStr(key).ToLower() Then
                Return i
            End If
            i += 1
        End While

        Return -1
    End Function
End Class

Remarques

Le BindingSource composant remplit de nombreuses fonctions. Tout d’abord, il simplifie la liaison des contrôles d’un formulaire aux données en fournissant la gestion des devises, la notification de modification et d’autres services entre les contrôles Windows Forms et les sources de données. Pour ce faire, attachez le BindingSource composant à votre source de données à l’aide de la DataSource propriété . Pour les scénarios de liaison complexes, vous pouvez éventuellement définir la DataMember propriété sur une colonne ou une liste spécifique dans la source de données. Vous liez ensuite des contrôles au BindingSource. Toutes les interactions supplémentaires avec les données sont effectuées avec des appels au BindingSource composant. Pour obtenir des exemples sur la façon dont le BindingSource peut simplifier le processus de liaison, consultez How to: Bind Windows Forms Controls to DBNull Database Values et How to: Handle Errors and Exceptions that Occur with Databinding. La navigation et la mise à jour de la source de données sont effectuées par le biais de méthodes telles que MoveNext, MoveLastet Remove. Les opérations telles que le tri et le filtrage sont gérées via les Sort propriétés et Filter . Pour plus d’informations sur l’utilisation du tri et du filtrage avec , BindingSourceconsultez How to: Sort and Filter ADO.NET Data with the Windows Forms BindingSource Component.

En outre, le BindingSource composant peut agir comme une source de données fortement typée. En règle générale, le type de la source de données sous-jacente est résolu via l’un des mécanismes suivants :

  • Utilisez la Add méthode pour ajouter un élément au BindingSource composant.

  • Définissez la propriété sur DataSource une liste, un objet unique ou un type.

Ces deux mécanismes créent une liste fortement typée. Pour plus d’informations sur l’utilisation de BindingSource pour lier à un type, consultez How to: Bind a Windows Forms Control to a Type. Vous pouvez également utiliser pour BindingSource lier vos contrôles à un objet de fabrique. Pour plus d’informations sur la procédure à suivre, consultez How to: Bind a Windows Forms Control to a Factory Object.

Notes

Étant donné qu’un BindingSource gère à la fois des sources de données simples et complexes, la terminologie est problématique. Dans cette documentation de classe, la liste des termes fait référence à une collection de données dans la source de données hébergée, et l’élément désigne un élément unique. Lorsque vous discutez des fonctionnalités associées à des sources de données complexes, la table et la ligne de termes équivalents sont utilisées.

BindingSource fournit des membres pour accéder aux données sous-jacentes. L’élément actif peut être récupéré via la Current propriété , et la liste entière peut être récupérée via la List propriété . Les opérations de modification sont prises en charge sur l’élément actuel via Current et les RemoveCurrentméthodes , EndEditCancelEdit et Add et AddNew . Bien que la gestion des devises soit gérée automatiquement pour tous les types de sources de données sous-jacents, cette classe expose un certain nombre d’événements, tels que CurrentItemChanged et DataSourceChanged, qui permettent la personnalisation.

Les sources de données liées à un BindingSource composant peuvent également être parcourues et gérées avec la BindingNavigator classe , qui fournit une interface utilisateur de type VCR pour la navigation dans les éléments d’une liste. Bien qu’elle BindingNavigator puisse être liée à n’importe quelle source de données, elle a été conçue pour s’intégrer à un BindingSource composant via sa BindingNavigator.BindingSource propriété .

La propriété par défaut de la BindingSource classe est DataSource. L’événement par défaut est CurrentChanged.

Attention

La plupart des membres de la BindingSource classe opèrent sur la liste sous-jacente représentée par la List propriété et font simplement référence à leur opération à la liste sous-jacente. Par conséquent, lorsque est BindingSource lié à une implémentation personnalisée de IList, le comportement exact de ces membres peut différer du comportement décrit dans la documentation de classe. Par exemple, la RemoveAt méthode appelle IList.RemoveAt. La BindingSource documentation décrit la RemoveAt méthode en comprenant que la RemoveAt méthode pour le sous-jacent IList est correctement implémentée.

Constructeurs

BindingSource()

Initialise une nouvelle instance de la classe BindingSource aux valeurs par défaut des propriétés.

BindingSource(IContainer)

Initialise une nouvelle instance de la classe BindingSource et ajoute BindingSource au conteneur spécifié.

BindingSource(Object, String)

Initialise une nouvelle instance de la classe BindingSource avec la source de données et la donnée membre spécifiées.

Propriétés

AllowEdit

Obtient une valeur indiquant si les éléments de la liste sous-jacente peuvent être modifiés.

AllowNew

Obtient ou définit une valeur indiquant si la méthode AddNew() peut être utilisée pour ajouter des éléments à la liste.

AllowRemove

Obtient une valeur indiquant si des éléments peuvent être supprimés de la liste sous-jacente.

CanRaiseEvents

Obtient une valeur qui indique si le composant peut déclencher un événement.

(Hérité de Component)
Container

Obtient le IContainer qui contient la Component.

(Hérité de Component)
Count

Obtient le nombre total d'éléments de la liste sous-jacente, en prenant la valeur Filter actuelle en considération.

CurrencyManager

Obtient le gestionnaire de devise associé à ce BindingSource.

Current

Obtient l'élément en cours dans la liste.

DataMember

Obtient ou définit la liste spécifique dans la source de données à laquelle le connecteur effectue actuellement des liaisons.

DataSource

Obtient ou définit la source de données à laquelle le connecteur effectue une liaison.

DesignMode

Obtient une valeur qui indique si Component est actuellement en mode design.

(Hérité de Component)
Events

Obtient la liste des gestionnaires d'événements attachés à ce Component.

(Hérité de Component)
Filter

Obtient ou définit l'expression utilisée pour filtrer les lignes qui s'affichent.

IsBindingSuspended

Obtient une valeur indiquant si la liaison de la liste est suspendue.

IsFixedSize

Obtient une valeur indiquant si la liste sous-jacente est de taille fixe.

IsReadOnly

Obtient une valeur indiquant si la liste sous-jacente est en lecture seule.

IsSorted

Obtient une valeur indiquant si les éléments de la liste sous-jacente sont triés.

IsSynchronized

Obtient une valeur indiquant si l’accès à la collection est synchronisé (thread-safe).

Item[Int32]

Obtient ou définit l'élément de liste situé à l'index spécifié.

List

Obtient la liste à laquelle le connecteur est lié.

Position

Obtient ou définit l'index de l'élément actuel dans la liste sous-jacente.

RaiseListChangedEvents

Obtient ou définit une valeur indiquant si les événements ListChanged doivent être déclenchés.

Site

Obtient ou définit le ISite de Component.

(Hérité de Component)
Sort

Obtient ou définit les noms de colonnes utilisés pour le tri, et l'ordre de tri pour consulter les lignes dans la source de données.

SortDescriptions

Obtient la collection de descriptions de tri appliquée à la source de données.

SortDirection

Obtient la direction dans laquelle les éléments de la liste sont triés.

SortProperty

Obtient le PropertyDescriptor utilisé actuellement pour trier la liste.

SupportsAdvancedSorting

Obtient une valeur indiquant si la source de données prend en charge le tri multicolonne.

SupportsChangeNotification

Obtient une valeur indiquant si la source de données prend en charge la notification de modification.

SupportsFiltering

Obtient une valeur indiquant si la source de données prend en charge le filtrage.

SupportsSearching

Obtient une valeur indiquant si la source de données prend en charge la recherche à l'aide de la méthode Find(PropertyDescriptor, Object).

SupportsSorting

Obtient une valeur indiquant si la source de données prend en charge le tri.

SyncRoot

Obtient un objet pouvant être utilisé pour synchroniser l’accès à la liste sous-jacente.

Méthodes

Add(Object)

Ajoute un élément existant à la liste interne.

AddNew()

Ajoute un nouvel élément à la liste sous-jacente.

ApplySort(ListSortDescriptionCollection)

Trie la source de données avec les descriptions de tri spécifiées.

ApplySort(PropertyDescriptor, ListSortDirection)

Trie la source de données avec le descripteur de propriété et la direction de tri spécifiés.

CancelEdit()

Annule l'opération de modification actuelle.

Clear()

Supprime tous les éléments de la liste.

Contains(Object)

Détermine si un objet est un élément de la liste.

CopyTo(Array, Int32)

Copie le contenu du List au niveau de la valeur d'index spécifiée dans le tableau spécifié.

CreateObjRef(Type)

Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant.

(Hérité de MarshalByRefObject)
Dispose()

Libère toutes les ressources utilisées par Component.

(Hérité de Component)
Dispose(Boolean)

Libère les ressources non managées utilisées par BindingSource et libère éventuellement les ressources managées.

EndEdit()

Applique des modifications en attente à la source de données sous-jacente.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
Find(PropertyDescriptor, Object)

Recherche l'index de l'élément qui a le descripteur de propriété donné.

Find(String, Object)

Retourne l'index de l'élément dans la liste avec le nom et la valeur de propriété spécifiés.

GetEnumerator()

Récupère un énumérateur pour List.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetItemProperties(PropertyDescriptor[])

Récupère un tableau d'objets PropertyDescriptor représentant les propriétés du type de liste de source de données pouvant être liées.

GetLifetimeService()
Obsolète.

Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
GetListName(PropertyDescriptor[])

Obtient le nom de la liste fournissant les données pour la liaison.

GetRelatedCurrencyManager(String)

Obtient le gestionnaire de devise connexe pour le membre de données spécifié.

GetService(Type)

Retourne un objet qui représente un service fourni par Component ou par son Container.

(Hérité de Component)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
IndexOf(Object)

Recherche l'objet spécifié et retourne l'index de la première occurrence dans la liste entière.

InitializeLifetimeService()
Obsolète.

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
Insert(Int32, Object)

Insère un élément dans la liste à l'index spécifié.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
MemberwiseClone(Boolean)

Crée une copie superficielle de l'objet MarshalByRefObject actuel.

(Hérité de MarshalByRefObject)
MoveFirst()

Passe au premier élément de la liste.

MoveLast()

Passe au dernier élément de la liste.

MoveNext()

Passe à l'élément suivant de la liste.

MovePrevious()

Passe à l'élément précédent de la liste.

OnAddingNew(AddingNewEventArgs)

Déclenche l’événement AddingNew.

OnBindingComplete(BindingCompleteEventArgs)

Déclenche l’événement BindingComplete.

OnCurrentChanged(EventArgs)

Déclenche l’événement CurrentChanged.

OnCurrentItemChanged(EventArgs)

Déclenche l’événement CurrentItemChanged.

OnDataError(BindingManagerDataErrorEventArgs)

Déclenche l’événement DataError.

OnDataMemberChanged(EventArgs)

Déclenche l’événement DataMemberChanged.

OnDataSourceChanged(EventArgs)

Déclenche l’événement DataSourceChanged.

OnListChanged(ListChangedEventArgs)

Déclenche l’événement ListChanged.

OnPositionChanged(EventArgs)

Déclenche l’événement PositionChanged.

Remove(Object)

Supprime l'élément spécifié de la liste.

RemoveAt(Int32)

Supprime l'élément au niveau de l'index spécifié dans la liste.

RemoveCurrent()

Supprime l'élément sélectionné de la liste.

RemoveFilter()

Supprime le filtre associé à ce BindingSource.

RemoveSort()

Supprime le tri associé à BindingSource.

ResetAllowNew()

Réinitialise la propriété AllowNew.

ResetBindings(Boolean)

Entraîne la relecture par un contrôle lié au BindingSource de tous les éléments dans la liste et l'actualisation de leurs valeurs affichées.

ResetCurrentItem()

Entraîne la relecture par un contrôle lié au BindingSource de l'élément actuellement sélectionné et l'actualisation de sa valeur affichée.

ResetItem(Int32)

Entraîne la relecture d'un contrôle lié au BindingSource à l'élément au niveau de l'index spécifié et actualise sa valeur affichée.

ResumeBinding()

Relance la liaison de données.

SuspendBinding()

Suspend la liaison de données pour empêcher que les modifications mettent à jour la source de données liée.

ToString()

Retourne un String contenant le nom du Component, s’il en existe un. Cette méthode ne doit pas être remplacée.

(Hérité de Component)

Événements

AddingNew

Se produit avant l'ajout d'un élément à la liste sous-jacente.

BindingComplete

Se produit lorsque tous les clients ont été liés à ce BindingSource.

CurrentChanged

Se produit quand l'élément actuellement lié change.

CurrentItemChanged

Se produit lorsque la propriété Current a changé de valeur.

DataError

Se produit lorsqu'une exception relative à la devise est gérée silencieusement par BindingSource.

DataMemberChanged

Se produit quand la valeur de propriété DataMember a été modifiée.

DataSourceChanged

Se produit quand la valeur de propriété DataSource a été modifiée.

Disposed

Se produit lorsque le composant est supprimé par un appel à la méthode Dispose().

(Hérité de Component)
ListChanged

Se produit en cas de modification de la liste sous-jacente ou d'un de ses éléments.

PositionChanged

Se produit une fois que la valeur de la propriété Position a été modifiée.

Implémentations d’interfaces explicites

IBindingList.AddIndex(PropertyDescriptor)

Ajoute PropertyDescriptor aux index utilisés pour la recherche.

IBindingList.RemoveIndex(PropertyDescriptor)

Supprime PropertyDescriptor des index utilisés pour la recherche.

ICancelAddNew.CancelNew(Int32)

Élimine un nouvel élément en attente de la collection.

ICancelAddNew.EndNew(Int32)

Valide un nouvel élément en attente dans la collection.

ISupportInitialize.BeginInit()

Signale à BindingSource que l'initialisation démarre.

ISupportInitialize.EndInit()

Signale à BindingSource que l'initialisation est terminée.

ISupportInitializeNotification.Initialized

Se produit lorsque BindingSource est initialisé.

ISupportInitializeNotification.IsInitialized

Obtient une valeur indiquant si BindingSource est initialisé.

Méthodes d’extension

Cast<TResult>(IEnumerable)

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.

AsParallel(IEnumerable)

Active la parallélisation d'une requête.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.

S’applique à

Voir aussi