BindingSource Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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é. |