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 form.
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 limite a un BindingSourceoggetto . L'oggetto BindingSource è associato a un BindingList<T> oggetto contenente un elenco di tipi di carattere.
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
Commenti
Il BindingSource componente serve molti scopi. In primo luogo, semplifica i controlli di associazione in un modulo ai dati fornendo la gestione delle valute, la notifica delle modifiche e altri servizi tra controlli e origini dati Windows Forms. 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 all'oggetto BindingSource. Tutte le ulteriori 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 di Windows Forms ai valori del database DBNulle Procedura: Gestire errori ed eccezioni che si verificano con databinding. Lo spostamento e l'aggiornamento dell'origine dati vengono eseguiti tramite metodi come 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 , BindingSourcevedere Procedura: Ordinare e filtrare i dati ADO.NET con il componente bindingsource Windows Forms.
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 usare l'oggetto BindingSource per associare a un tipo, vedere Procedura: Associare un controllo Windows Forms a un tipo. È anche possibile usare per BindingSource associare i controlli a un oggetto factory. Per altre informazioni su come eseguire questa operazione, vedere Procedura: Associare un controllo Windows Forms a un oggetto Factory.
Nota
Poiché un BindingSource gestisce sia origini dati semplici che complesse, la terminologia è problematica. All'interno di questa documentazione della classe, il termine list fa riferimento a una raccolta dati all'interno dell'origine dati ospitata e l'elemento indica un singolo elemento. Quando si parla di funzionalità associate a origini dati complesse, vengono usati la tabella dei termini e la riga equivalenti.
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 e AddAddNew.Current Anche se la gestione delle valute viene gestita automaticamente per tutti i tipi di origine dati sottostanti, questa classe espone un numero 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 classe, che fornisce un'interfaccia utente simile al BindingNavigator registro virtuale per lo spostamento di elementi all'interno di un elenco. Anche se BindingNavigator può essere associata a qualsiasi origine dati, è stata progettata 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'operazione all'elenco sottostante. Pertanto, quando l'oggetto BindingSource è associato a un'implementazione personalizzata di IList, il comportamento esatto di questi membri può essere diverso dal comportamento descritto nella documentazione della classe. Ad esempio, il RemoveAt metodo chiama IList.RemoveAt. La BindingSource documentazione descrive il metodo con la comprensione che il RemoveAt metodo per il RemoveAt sottostante IList viene implementato correttamente.
Costruttori
BindingSource() |
Inizializza una nuova istanza della classe BindingSource con i valori predefiniti delle proprietà. |
BindingSource(IContainer) |
Inizializza una nuova istanza della classe BindingSource e aggiunge l'oggetto BindingSource al contenitore specificato. |
BindingSource(Object, String) |
Inizializza una nuova istanza della classe BindingSource con l'origine dati e il membro dati specificati. |
Proprietà
AllowEdit |
Ottiene un valore che indica se è possibile modificare gli elementi dell'elenco sottostante. |
AllowNew |
Ottiene o imposta un valore che indica se il metodo AddNew() può essere utilizzato per aggiungere elementi all'elenco. |
AllowRemove |
Ottiene un valore che indica se è possibile rimuovere elementi dall'elenco sottostante. |
CanRaiseEvents |
Ottiene un valore che indica se il componente può generare un evento. (Ereditato da Component) |
Container |
Ottiene l'oggetto IContainer che contiene Component. (Ereditato da Component) |
Count |
Ottiene il numero complessivo di elementi nell'elenco sottostante, prendendo in considerazione il valore Filter corrente. |
CurrencyManager |
Ottiene l'oggetto CurrencyManager associato a questo oggetto BindingSource. |
Current |
Ottiene l'elemento corrente dell'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 il connettore è associato. |
DesignMode |
Ottiene un valore che indica se il Component si trova in modalità progettazione. (Ereditato da Component) |
Events |
Ottiene l'elenco dei gestori eventi allegati a questo Component. (Ereditato da Component) |
Filter |
Ottiene o imposta l'espressione usata per filtrare le righe da visualizzare. |
IsBindingSuspended |
Ottiene un valore che indica se l'associazione dell'elenco è sospeso. |
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 dell'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 di un elenco 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 gli eventi ListChanged devono essere generati. |
Site |
Ottiene o imposta l'oggetto ISite di Component. (Ereditato da Component) |
Sort |
Ottiene o imposta i nomi di colonna usati per l'ordinamento, nonché l'ordine di visualizzazione delle righe nell'origine dati. |
SortDescriptions |
Ottiene la raccolta delle descrizioni di ordinamento applicate all'origine dati. |
SortDirection |
Ottiene la direzione di ordinamento degli elementi dell'elenco. |
SortProperty |
Ottiene l'oggetto PropertyDescriptor che viene 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 di modifiche. |
SupportsFiltering |
Ottiene un valore che indica se l'origine dati supporta i filtri. |
SupportsSearching |
Ottiene un valore che indica se l'origine dati supporta la ricerca con il metodo Find(PropertyDescriptor, Object). |
SupportsSorting |
Ottiene un valore che indica se l'origine dati supporta l'ordinamento. |
SyncRoot |
Ottiene un oggetto che può essere usato per sincronizzare l'accesso all'elenco sottostante. |
Metodi
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 e la direzione di ordinamento della proprietà specificati. |
CancelEdit() |
Annulla l'operazione di modifica corrente. |
Clear() |
Rimuove tutti gli elementi dall'elenco. |
Contains(Object) |
Determina se un oggetto è un elemento incluso nell'elenco. |
CopyTo(Array, Int32) |
Copia il contenuto della proprietà List nella matrice specificata, partendo dal valore dell'indice specificato. |
CreateObjRef(Type) |
Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione 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, 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 dell'elenco con il nome e il valore di 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 oggetti PropertyDescriptor rappresentante le proprietà associabili del tipo di elenco di origine dati. |
GetLifetimeService() |
Obsoleti.
Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza. (Ereditato da MarshalByRefObject) |
GetListName(PropertyDescriptor[]) |
Ottiene il nome dell'elenco che fornisce i dati per il binding. |
GetRelatedCurrencyManager(String) |
Ottiene il gestore della valuta correlato per il membro dati specificato. |
GetService(Type) |
Consente di restituire un oggetto che rappresenta un servizio fornito da Component o dal relativo Container. (Ereditato da Component) |
GetType() |
Ottiene l'oggetto 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 dell'oggetto Object corrente. (Ereditato da Object) |
MemberwiseClone(Boolean) |
Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente. (Ereditato da MarshalByRefObject) |
MoveFirst() |
Passa al primo elemento dell'elenco. |
MoveLast() |
Passa all'ultimo elemento dell'elenco. |
MoveNext() |
Passa al successivo elemento dell'elenco. |
MovePrevious() |
Passa all'elemento precedente dell'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 dall'elenco l'elemento specificato. |
RemoveAt(Int32) |
Rimuove l'elemento presente nell'elenco in corrispondenza dell'indice specificato. |
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 proprietà AllowNew. |
ResetBindings(Boolean) |
Fa sì che un controllo associato all'oggetto BindingSource esegua la rilettura di tutti gli elementi dell'elenco e aggiorni i relativi valori visualizzati. |
ResetCurrentItem() |
Fa sì che un controllo associato all'oggetto BindingSource esegua la rilettura dell'elemento correntemente selezionato e aggiorni il relativo valore visualizzato. |
ResetItem(Int32) |
Fa sì che un controllo associato all'oggetto BindingSource esegua la rilettura dell'elemento posto in corrispondenza dell'indice specificato e aggiorni il relativo valore visualizzato. |
ResumeBinding() |
Riprende il data binding. |
SuspendBinding() |
Sospende il data binding per evitare che le modifiche aggiornino l'origine dati associata. |
ToString() |
Restituisce un oggetto String che contiene il nome dell'eventuale oggetto Component. Questo metodo non deve essere sottoposto a override. (Ereditato da Component) |
Eventi
AddingNew |
Si verifica prima dell'aggiunta di un elemento all'elenco sottostante. |
BindingComplete |
Si verifica quando tutti i client sono stati associati a questo oggetto BindingSource. |
CurrentChanged |
Si verifica quando l'elemento attualmente associato viene modificato. |
CurrentItemChanged |
Si verifica in seguito alla modifica del valore della proprietà Current. |
DataError |
Si verifica quando un'eccezione correlata alla valuta viene gestita in modo invisibile all'utente dall'oggetto BindingSource. |
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 metodo Dispose(). (Ereditato da Component) |
ListChanged |
Si verifica quando viene modificato l'elenco sottostante o uno dei relativi elementi. |
PositionChanged |
Si verifica in seguito alla modifica del valore della proprietà Position. |
Implementazioni dell'interfaccia esplicita
IBindingList.AddIndex(PropertyDescriptor) |
Consente di aggiungere l'oggetto PropertyDescriptor agli indici utilizzati per la ricerca. |
IBindingList.RemoveIndex(PropertyDescriptor) |
Consente di rimuovere l'oggetto PropertyDescriptor dagli indici utilizzati per la ricerca. |
ICancelAddNew.CancelNew(Int32) |
Elimina dalla raccolta un nuovo elemento in sospeso. |
ICancelAddNew.EndNew(Int32) |
Esegue il commit di un nuovo elemento in sospeso nella raccolta. |
ISupportInitialize.BeginInit() |
Segnala all'oggetto BindingSource l'avvio dell'inizializzazione. |
ISupportInitialize.EndInit() |
Segnala all'oggetto BindingSource il completamento dell'inizializzazione. |
ISupportInitializeNotification.Initialized |
Si verifica quando viene inizializzato l'oggetto BindingSource. |
ISupportInitializeNotification.IsInitialized |
Ottiene un valore che indica se l'oggetto BindingSource è inizializzato. |
Metodi di estensione
Cast<TResult>(IEnumerable) |
Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato. |
OfType<TResult>(IEnumerable) |
Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato. |
AsParallel(IEnumerable) |
Consente la parallelizzazione di una query. |
AsQueryable(IEnumerable) |
Converte un oggetto IEnumerable in un oggetto IQueryable. |