Partager via


BindingSource Classe

Définition

Encapsule la source de données d’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 une ListBox liaison à un BindingSource. Il BindingSource est lié à un BindingList<T> qui contient une liste de polices.

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace BindingSourceExamples;

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

    public Form1() => Load += Form1_Load;

    TextBox textBox1;
    Button button1;
    ListBox listBox1;

    BindingSource binding1;
    void Form1_Load(object sender, EventArgs e)
    {
        listBox1 = new ListBox();
        textBox1 = new TextBox();
        binding1 = [];
        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 += button1_Click;
        ClientSize = new Size(292, 266);
        Controls.Add(button1);
        Controls.Add(textBox1);
        Controls.Add(listBox1);

        MyFontList fonts = [];
        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";
    }

    void button1_Click(object sender, EventArgs e)
    {
        if (!binding1.SupportsSearching)
        {
            _ = 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 => 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.Equals((string)key, StringComparison.CurrentCultureIgnoreCase))
            {
                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 sert de nombreux objectifs. Tout d’abord, il simplifie les contrôles de liaison d’un formulaire vers des données en fournissant une gestion monétaire, une notification de modification et d’autres services entre les contrôles Windows Forms et les sources de données. Pour ce faire, joignez 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 BindingSource façon de simplifier le processus de liaison, consultez Guide pratique pour lier des contrôles Windows Forms aux valeurs de base de données DBNull et comment : gérer les erreurs et les exceptions qui se produisent avec la liaison de données. La navigation et la mise à jour de la source de données sont effectuées via des méthodes telles que MoveNext, MoveLastet Remove. Les opérations telles que le tri et le filtrage sont gérées via les propriétés et Filter les Sort propriétés. Pour plus d’informations sur l’utilisation du tri et du filtrage avec le BindingSourcecomposant BindingSource Windows Forms, consultez Comment : trier et filtrer ADO.NET données avec le composant BindingSource Windows Forms.

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 DataSource propriété sur 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 la BindingSource liaison à un type, consultez Guide pratique pour lier un contrôle Windows Forms à un type. Vous pouvez également utiliser la liaison BindingSource de vos contrôles à un objet de fabrique. Pour plus d’informations sur la procédure à suivre, consultez Guide pratique pour lier un contrôle Windows Forms à un objet Factory.

Note

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

BindingSource fournit aux membres l’accès 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 d’édition sont prises en charge sur l’élément actuel via et les RemoveCurrentméthodes , CancelEditEndEditet .AddAddNewCurrent Bien que la gestion monétaire 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 naviguer dans 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 par le biais de 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.

Avertissement

De nombreux 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 l’application BindingSource est liée à une implémentation personnalisée, IListle 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 avec la compréhension que la RemoveAt méthode pour le sous-jacent IList est correctement implémentée.

Constructeurs

Nom Description
BindingSource()

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

BindingSource(IContainer)

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

BindingSource(Object, String)

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

Propriétés

Nom Description
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 AddNew() méthode peut être utilisée pour ajouter des éléments à la liste.

AllowRemove

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

CanRaiseEvents

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

(Hérité de Component)
Container

Obtient le IContainer fichier qui contient le Component.

(Hérité de Component)
Count

Obtient le nombre total d’éléments de la liste sous-jacente, en tenant compte de la valeur actuelle Filter .

CurrencyManager

Obtient le gestionnaire de devises associé à ce BindingSource.

Current

Obtient l’élément actif dans la liste.

DataMember

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

DataSource

Obtient ou définit la source de données à laquelle le connecteur est lié.

DesignMode

Obtient une valeur qui indique si la Component valeur est actuellement en mode création.

(Hérité de Component)
Events

Obtient la liste des gestionnaires d’événements qui sont attachés à ce Component.

(Hérité de Component)
Filter

Obtient ou définit l’expression utilisée pour filtrer les lignes qui sont consultées.

IsBindingSuspended

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

IsFixedSize

Obtient une valeur indiquant si la liste sous-jacente a une 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 à l’index spécifié.

List

Obtient la liste à laquelle le connecteur est lié.

Position

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

RaiseListChangedEvents

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

Site

Obtient ou définit le ISiteComponent.

(Hérité de Component)
Sort

Obtient ou définit les noms de colonnes utilisés pour le tri et l’ordre de tri pour afficher les lignes de la source de données.

SortDescriptions

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

SortDirection

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

SortProperty

Obtient l’élément PropertyDescriptor utilisé pour trier la liste.

SupportsAdvancedSorting

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

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 avec la Find(PropertyDescriptor, Object) méthode.

SupportsSorting

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

SyncRoot

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

Méthodes

Nom Description
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 à l’aide du descripteur de propriété spécifié et de la direction de tri.

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 tableau spécifié, en commençant par la valeur d’index spécifiée.

CreateObjRef(Type)

Crée un objet qui contient toutes les informations pertinentes requises pour générer un proxy utilisé pour communiquer avec un objet distant.

(Hérité de MarshalByRefObject)
Dispose()

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

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

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

EndEdit()

Applique les 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 le List.

GetHashCode()

Sert 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 pouvant être liées du type de liste de source de données.

GetLifetimeService()
Obsolète.

Récupère l’objet de service de durée de vie actuel 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 des données pour la liaison.

GetRelatedCurrencyManager(String)

Obtient le gestionnaire monétaire associé pour le membre de données spécifié.

GetService(Type)

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

(Hérité de Component)
GetType()

Obtient la 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 Objectactuel.

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

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

(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 à l’index spécifié dans la liste.

RemoveCurrent()

Supprime l’élément actif de la liste.

RemoveFilter()

Supprime le filtre associé au BindingSource.

RemoveSort()

Supprime le tri associé au BindingSource.

ResetAllowNew()

Réinitialise la AllowNew propriété.

ResetBindings(Boolean)

Provoque un contrôle lié à la BindingSource relecture de tous les éléments de la liste et actualise leurs valeurs affichées.

ResetCurrentItem()

Provoque un contrôle lié à la BindingSource relecture de l’élément actuellement sélectionné et actualise sa valeur affichée.

ResetItem(Int32)

Provoque un contrôle lié à la BindingSource relecture de l’élément à l’index spécifié et actualise sa valeur affichée.

ResumeBinding()

Reprend la liaison de données.

SuspendBinding()

Suspend la liaison de données pour empêcher la mise à jour de la source de données liée.

ToString()

Retourne un String nom contenant le nom du Component, le cas échéant. Cette méthode ne doit pas être remplacée.

(Hérité de Component)

Événements

Nom Description
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 à ceci BindingSource.

CurrentChanged

Se produit lorsque l’élément actuellement lié change.

CurrentItemChanged

Se produit lorsqu’une valeur de propriété de la Current propriété a changé.

DataError

Se produit lorsqu’une exception liée à la devise est gérée en mode silencieux par le 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 Dispose() méthode.

(Hérité de Component)
ListChanged

Se produit lorsque la liste sous-jacente change ou qu’un élément de la liste change.

PositionChanged

Se produit après la modification de la valeur de la Position propriété.

Implémentations d’interfaces explicites

Nom Description
IBindingList.AddIndex(PropertyDescriptor)

Ajoute les PropertyDescriptor index utilisés pour la recherche.

IBindingList.RemoveIndex(PropertyDescriptor)

Supprime les PropertyDescriptor index utilisés pour la recherche.

ICancelAddNew.CancelNew(Int32)

Ignore 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 que l’initialisation BindingSource démarre.

ISupportInitialize.EndInit()

Signale que l’initialisation BindingSource est terminée.

ISupportInitializeNotification.Initialized

Se produit lorsque l’initialisation BindingSource est effectuée.

ISupportInitializeNotification.IsInitialized

Obtient une valeur indiquant si l’initialisation BindingSource est initialisée.

Méthodes d’extension

Nom Description
AsParallel(IEnumerable)

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

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.

Cast<TResult>(IEnumerable)

Convertit les éléments d’un IEnumerable en type spécifié.

OfType<TResult>(IEnumerable)

Filtre les éléments d’une IEnumerable en fonction d’un type spécifié.

S’applique à

Voir aussi