BindingSource Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Incapsula l'origine dati per un modulo.
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
- Ereditarietà
- Attributi
- Implementazioni
Esempio
Nell'esempio di codice seguente viene illustrato un ListBox oggetto associato a un oggetto BindingSource. È BindingSource associato a un BindingList<T> oggetto che contiene un elenco di tipi di carattere.
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
Commenti
Il BindingSource componente svolge molti scopi. In primo luogo, semplifica l'associazione dei controlli in un modulo ai dati fornendo gestione delle valute, notifica delle modifiche e altri servizi tra controlli Windows Form e origini dati. Questa operazione viene eseguita collegando il componente all'origine BindingSource dati usando la DataSource proprietà . Per scenari di associazione complessi è possibile impostare facoltativamente la DataMember proprietà su una colonna o un elenco specifico nell'origine dati. Si associano quindi i controlli a BindingSource. Tutte le altre interazioni con i dati vengono eseguite con le chiamate al BindingSource componente. Per esempi su come BindingSource semplificare il processo di associazione, vedere Procedura: Associare controlli Windows Form ai valori del database DBNull e Procedura: Gestire errori ed eccezioni che si verificano con databinding. Lo spostamento e l'aggiornamento dell'origine dati vengono eseguiti tramite metodi quali MoveNext, MoveLaste Remove. Le operazioni come l'ordinamento e il filtro vengono gestite tramite le Sort proprietà e Filter . Per altre informazioni sull'uso dell'ordinamento e del filtro con BindingSource, vedere Procedura: Ordinare e filtrare ADO.NET dati con il componente BindingSource di Windows Form.
Inoltre, il BindingSource componente può fungere da origine dati fortemente tipizzata. In genere il tipo dell'origine dati sottostante viene corretto tramite uno dei meccanismi seguenti:
Utilizzare il Add metodo per aggiungere un elemento al BindingSource componente.
Impostare la DataSource proprietà su un elenco, un singolo oggetto o un tipo.
Entrambi questi meccanismi creano un elenco fortemente tipizzato. Per altre informazioni su come utilizzare per eseguire l'associazione BindingSource a un tipo, vedere Procedura: Associare un controllo Windows Form a un tipo. È anche possibile utilizzare BindingSource per associare i controlli a un oggetto factory. Per altre informazioni su come eseguire questa operazione, vedere Procedura: Associare un controllo Windows Form a un oggetto Factory.
Annotazioni
Poiché un BindingSource oggetto gestisce origini dati semplici e complesse, la terminologia è problematica. All'interno di questa documentazione di classe, il termine list fa riferimento a una raccolta di dati all'interno dell'origine dati ospitata e l'elemento indica un singolo elemento. Quando si illustrano le funzionalità associate a origini dati complesse, vengono usati i termini equivalenti tabella e riga .
BindingSource fornisce membri per l'accesso ai dati sottostanti. L'elemento corrente può essere recuperato tramite la Current proprietà e l'intero elenco può essere recuperato tramite la List proprietà . Le operazioni di modifica sono supportate nell'elemento corrente tramite e i RemoveCurrentmetodi , CancelEditEndEdite .AddAddNewCurrent Anche se la gestione della valuta viene gestita automaticamente per tutti i tipi di origine dati sottostanti, questa classe espone una serie di eventi, ad esempio CurrentItemChanged e DataSourceChanged, che consentono la personalizzazione.
Le origini dati associate a un BindingSource componente possono anche essere spostate e gestite con la BindingNavigator classe , che fornisce un'interfaccia utente simile a VCR per lo spostamento di elementi all'interno di un elenco. Anche se BindingNavigator può essere associato a qualsiasi origine dati, è stato progettato per l'integrazione con un BindingSource componente tramite la relativa BindingNavigator.BindingSource proprietà.
La proprietà predefinita per la BindingSource classe è DataSource. L'evento predefinito è CurrentChanged.
Attenzione
Molti dei membri della BindingSource classe operano sull'elenco sottostante rappresentato dalla List proprietà e fanno semplicemente riferimento all'elenco sottostante. Pertanto, quando BindingSource è associato a un'implementazione personalizzata di IList, il comportamento esatto di questi membri può differire dal comportamento descritto nella documentazione della classe. Ad esempio, il RemoveAt metodo chiama IList.RemoveAt. La BindingSource documentazione descrive il RemoveAt metodo con la comprensione che il RemoveAt metodo per l'oggetto sottostante IList è implementato correttamente.
Costruttori
| Nome | Descrizione |
|---|---|
| BindingSource() |
Inizializza una nuova istanza della BindingSource classe sui valori di proprietà predefiniti. |
| BindingSource(IContainer) |
Inizializza una nuova istanza della BindingSource classe e aggiunge l'oggetto BindingSource al contenitore specificato. |
| BindingSource(Object, String) |
Inizializza una nuova istanza della BindingSource classe con l'origine dati e il membro dati specificati. |
Proprietà
| Nome | Descrizione |
|---|---|
| AllowEdit |
Ottiene un valore che indica se è possibile modificare gli elementi nell'elenco sottostante. |
| AllowNew |
Ottiene o imposta un valore che indica se il AddNew() metodo può essere utilizzato per aggiungere elementi all'elenco. |
| AllowRemove |
Ottiene un valore che indica se gli elementi possono essere rimossi dall'elenco sottostante. |
| CanRaiseEvents |
Ottiene un valore che indica se il componente può generare un evento. (Ereditato da Component) |
| Container |
Ottiene l'oggetto IContainer contenente l'oggetto Component. (Ereditato da Component) |
| Count |
Ottiene il numero totale di elementi nell'elenco sottostante, prendendo in considerazione il valore corrente Filter . |
| CurrencyManager |
Ottiene il gestore di valuta associato all'oggetto BindingSource. |
| Current |
Ottiene l'elemento corrente nell'elenco. |
| DataMember |
Ottiene o imposta l'elenco specifico nell'origine dati a cui il connettore è attualmente associato. |
| DataSource |
Ottiene o imposta l'origine dati a cui è associato il connettore. |
| DesignMode |
Ottiene un valore che indica se è Component attualmente in modalità progettazione. (Ereditato da Component) |
| Events |
Ottiene l'elenco dei gestori eventi associati a questo Componentoggetto . (Ereditato da Component) |
| Filter |
Ottiene o imposta l'espressione utilizzata per filtrare le righe visualizzate. |
| IsBindingSuspended |
Ottiene un valore che indica se l'associazione elenco è sospesa. |
| IsFixedSize |
Ottiene un valore che indica se l'elenco sottostante ha una dimensione fissa. |
| IsReadOnly |
Ottiene un valore che indica se l'elenco sottostante è di sola lettura. |
| IsSorted |
Ottiene un valore che indica se gli elementi nell'elenco sottostante sono ordinati. |
| IsSynchronized |
Ottiene un valore che indica se l'accesso alla raccolta è sincronizzato (thread-safe). |
| Item[Int32] |
Ottiene o imposta l'elemento list in corrispondenza dell'indice specificato. |
| List |
Ottiene l'elenco a cui è associato il connettore. |
| Position |
Ottiene o imposta l'indice dell'elemento corrente nell'elenco sottostante. |
| RaiseListChangedEvents |
Ottiene o imposta un valore che indica se ListChanged gli eventi devono essere generati. |
| Site |
Ottiene o imposta l'oggetto ISite dell'oggetto Component. (Ereditato da Component) |
| Sort |
Ottiene o imposta i nomi di colonna utilizzati per l'ordinamento e l'ordinamento per la visualizzazione delle righe nell'origine dati. |
| SortDescriptions |
Ottiene la raccolta di descrizioni di ordinamento applicate all'origine dati. |
| SortDirection |
Ottiene la direzione in cui vengono ordinati gli elementi nell'elenco. |
| SortProperty |
Ottiene l'oggetto PropertyDescriptor utilizzato per l'ordinamento dell'elenco. |
| SupportsAdvancedSorting |
Ottiene un valore che indica se l'origine dati supporta l'ordinamento a più colonne. |
| SupportsChangeNotification |
Ottiene un valore che indica se l'origine dati supporta la notifica delle modifiche. |
| SupportsFiltering |
Ottiene un valore che indica se l'origine dati supporta il filtro. |
| SupportsSearching |
Ottiene un valore che indica se l'origine dati supporta la ricerca con il Find(PropertyDescriptor, Object) metodo . |
| SupportsSorting |
Ottiene un valore che indica se l'origine dati supporta l'ordinamento. |
| SyncRoot |
Ottiene un oggetto che può essere utilizzato per sincronizzare l'accesso all'elenco sottostante. |
Metodi
| Nome | Descrizione |
|---|---|
| Add(Object) |
Aggiunge un elemento esistente all'elenco interno. |
| AddNew() |
Aggiunge un nuovo elemento all'elenco sottostante. |
| ApplySort(ListSortDescriptionCollection) |
Ordina l'origine dati con le descrizioni di ordinamento specificate. |
| ApplySort(PropertyDescriptor, ListSortDirection) |
Ordina l'origine dati usando il descrittore di proprietà e la direzione di ordinamento specificati. |
| CancelEdit() |
Annulla l'operazione di modifica corrente. |
| Clear() |
Rimuove tutti gli elementi dall'elenco. |
| Contains(Object) |
Determina se un oggetto è un elemento nell'elenco. |
| CopyTo(Array, Int32) |
Copia il contenuto dell'oggetto List nella matrice specificata, a partire dal valore di indice specificato. |
| CreateObjRef(Type) |
Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto. (Ereditato da MarshalByRefObject) |
| Dispose() |
Rilascia tutte le risorse usate da Component. (Ereditato da Component) |
| Dispose(Boolean) |
Rilascia le risorse non gestite usate da BindingSource e, facoltativamente, rilascia le risorse gestite. |
| EndEdit() |
Applica le modifiche in sospeso all'origine dati sottostante. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| Find(PropertyDescriptor, Object) |
Cerca l'indice dell'elemento con il descrittore di proprietà specificato. |
| Find(String, Object) |
Restituisce l'indice dell'elemento nell'elenco con il nome e il valore della proprietà specificati. |
| GetEnumerator() |
Recupera un enumeratore per l'oggetto List. |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetItemProperties(PropertyDescriptor[]) |
Recupera una matrice di PropertyDescriptor oggetti che rappresentano le proprietà associabili del tipo di elenco di origini dati. |
| GetLifetimeService() |
Obsoleti.
Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| GetListName(PropertyDescriptor[]) |
Ottiene il nome dell'elenco che fornisce i dati per l'associazione. |
| GetRelatedCurrencyManager(String) |
Ottiene il gestore valuta correlato per il membro dati specificato. |
| GetService(Type) |
Restituisce un oggetto che rappresenta un servizio fornito da Component o da Container. (Ereditato da Component) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| IndexOf(Object) |
Cerca l'oggetto specificato e restituisce l'indice della prima occorrenza all'interno dell'intero elenco. |
| InitializeLifetimeService() |
Obsoleti.
Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| Insert(Int32, Object) |
Inserisce un elemento nell'elenco in corrispondenza dell'indice specificato. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| MemberwiseClone(Boolean) |
Crea una copia superficiale dell'oggetto corrente MarshalByRefObject . (Ereditato da MarshalByRefObject) |
| MoveFirst() |
Passa al primo elemento dell'elenco. |
| MoveLast() |
Passa all'ultimo elemento dell'elenco. |
| MoveNext() |
Passa all'elemento successivo nell'elenco. |
| MovePrevious() |
Passa all'elemento precedente nell'elenco. |
| OnAddingNew(AddingNewEventArgs) |
Genera l'evento AddingNew. |
| OnBindingComplete(BindingCompleteEventArgs) |
Genera l'evento BindingComplete. |
| OnCurrentChanged(EventArgs) |
Genera l'evento CurrentChanged. |
| OnCurrentItemChanged(EventArgs) |
Genera l'evento CurrentItemChanged. |
| OnDataError(BindingManagerDataErrorEventArgs) |
Genera l'evento DataError. |
| OnDataMemberChanged(EventArgs) |
Genera l'evento DataMemberChanged. |
| OnDataSourceChanged(EventArgs) |
Genera l'evento DataSourceChanged. |
| OnListChanged(ListChangedEventArgs) |
Genera l'evento ListChanged. |
| OnPositionChanged(EventArgs) |
Genera l'evento PositionChanged. |
| Remove(Object) |
Rimuove l'elemento specificato dall'elenco. |
| RemoveAt(Int32) |
Rimuove l'elemento in corrispondenza dell'indice specificato nell'elenco. |
| RemoveCurrent() |
Rimuove l'elemento corrente dall'elenco. |
| RemoveFilter() |
Rimuove il filtro associato all'oggetto BindingSource. |
| RemoveSort() |
Rimuove l'ordinamento associato all'oggetto BindingSource. |
| ResetAllowNew() |
Reinizializza la AllowNew proprietà . |
| ResetBindings(Boolean) |
Fa sì che un controllo associato all'oggetto BindingSource rilegge tutti gli elementi nell'elenco e aggiorni i relativi valori visualizzati. |
| ResetCurrentItem() |
Fa sì che un controllo associato all'oggetto BindingSource rilegge l'elemento attualmente selezionato e aggiorni il valore visualizzato. |
| ResetItem(Int32) |
Fa in modo che un controllo associato all'oggetto BindingSource rilegge l'elemento in corrispondenza dell'indice specificato e aggiorni il valore visualizzato. |
| ResumeBinding() |
Riprende il data binding. |
| SuspendBinding() |
Sospende il data binding per impedire alle modifiche di aggiornare l'origine dati associata. |
| ToString() |
Restituisce un oggetto String contenente il nome dell'oggetto Component, se presente. Questo metodo non deve essere sottoposto a override. (Ereditato da Component) |
Eventi
| Nome | Descrizione |
|---|---|
| AddingNew |
Si verifica prima dell'aggiunta di un elemento all'elenco sottostante. |
| BindingComplete |
Si verifica quando tutti i client sono stati associati a questo BindingSourceoggetto . |
| CurrentChanged |
Si verifica quando l'elemento attualmente associato cambia. |
| CurrentItemChanged |
Si verifica quando viene modificato un valore della Current proprietà . |
| DataError |
Si verifica quando un'eccezione BindingSourcecorrelata alla valuta viene gestita automaticamente da . |
| DataMemberChanged |
Si verifica quando viene modificato il valore della proprietà DataMember. |
| DataSourceChanged |
Si verifica quando viene modificato il valore della proprietà DataSource. |
| Disposed |
Si verifica quando il componente viene eliminato da una chiamata al Dispose() metodo . (Ereditato da Component) |
| ListChanged |
Si verifica quando l'elenco sottostante cambia o un elemento nell'elenco cambia. |
| PositionChanged |
Si verifica dopo la modifica del valore della Position proprietà. |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IBindingList.AddIndex(PropertyDescriptor) |
Aggiunge l'oggetto PropertyDescriptor agli indici utilizzati per la ricerca. |
| IBindingList.RemoveIndex(PropertyDescriptor) |
Rimuove l'oggetto PropertyDescriptor dagli indici utilizzati per la ricerca. |
| ICancelAddNew.CancelNew(Int32) |
Rimuove un nuovo elemento in sospeso dalla raccolta. |
| ICancelAddNew.EndNew(Int32) |
Esegue il commit di un nuovo elemento in sospeso nella raccolta. |
| ISupportInitialize.BeginInit() |
Segnala l'avvio dell'inizializzazione BindingSource . |
| ISupportInitialize.EndInit() |
Segnala che l'inizializzazione BindingSource è stata completata. |
| ISupportInitializeNotification.Initialized |
Si verifica quando l'oggetto BindingSource viene inizializzato. |
| ISupportInitializeNotification.IsInitialized |
Ottiene un valore che indica se l'oggetto BindingSource è inizializzato. |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| AsParallel(IEnumerable) |
Abilita la parallelizzazione di una query. |
| AsQueryable(IEnumerable) |
Converte un IEnumerable in un IQueryable. |
| Cast<TResult>(IEnumerable) |
Esegue il cast degli elementi di un IEnumerable al tipo specificato. |
| OfType<TResult>(IEnumerable) |
Filtra gli elementi di un IEnumerable in base a un tipo specificato. |