Architettura del componente BindingSourceBindingSource Component Architecture

Con il BindingSource componente, è possibile associare universalmente tutti i controlli Windows Form alle origini dati.With the BindingSource component, you can universally bind all Windows Forms controls to data sources.

Il BindingSource componente semplifica il processo di associazione di controlli a un'origine dati e fornisce i seguenti vantaggi rispetto all'associazione dati tradizionale:The BindingSource component simplifies the process of binding controls to a data source and provides the following advantages over traditional data binding:

  • Consente l'associazione in fase di progettazione per gli oggetti business.Enables design-time binding to business objects.

  • Incapsula CurrencyManager funzionalità ed espone CurrencyManager eventi in fase di progettazione.Encapsulates CurrencyManager functionality and exposes CurrencyManager events at design time.

  • Semplifica la creazione di un elenco che supporta il IBindingList interfaccia, fornendo la notifica di modifica nell'elenco per le origini dati che non supportano in modo nativo l'elenco di notifiche di modifica.Simplifies creating a list that supports the IBindingList interface by providing list change notification for data sources that do not natively support list change notification.

  • Fornisce un punto di estensibilità per il IBindingList.AddNew metodo.Provides an extensibility point for the IBindingList.AddNew method.

  • Fornisce un livello di riferimento indiretto tra l'origine dati e il controllo.Provides a level of indirection between the data source and the control. Questo riferimento indiretto è importante quando l'origine dati potrebbe cambiare in fase di esecuzione.This indirection is important when the data source may change at run time.

  • Interagisce con altri controlli Windows Form dati correlati, in particolare il BindingNavigator e DataGridView controlli.Interoperates with other data-related Windows Forms controls, specifically the BindingNavigator and the DataGridView controls.

Per questi motivi, il BindingSource componente è il modo migliore per associare i controlli Windows Form alle origini dati.For these reasons, the BindingSource component is the preferred way to bind your Windows Forms controls to data sources.

Funzionalità di BindingSourceBindingSource Features

Il BindingSource componente fornisce diverse funzionalità per l'associazione di controlli ai dati.The BindingSource component provides several features for binding controls to data. Con queste funzionalità, è possibile implementare la maggior parte degli scenari di associazione dati con quasi alcun codice da parte dell'utente.With these features, you can implement most data-binding scenarios with almost no coding on your part.

Il BindingSource componente esegue questa operazione fornendo un'interfaccia coerente per l'accesso a diversi tipi di origini dati.The BindingSource component accomplishes this by providing a consistent interface for accessing many different kinds of data sources. Ciò significa che utilizzare la stessa procedura per l'associazione a qualsiasi tipo.This means that you use the same procedure for binding to any type. Ad esempio, è possibile collegare il DataSource proprietà per un DataSet o a un oggetto business e in entrambi i casi è usare lo stesso set di proprietà, metodi ed eventi per modificare l'origine dati.For example, you can attach the DataSource property to a DataSet or to a business object and in both cases you use the same set of properties, methods, and events to manipulate the data source.

L'interfaccia coerenza fornita dal BindingSource componente semplifica notevolmente il processo di associazione dati ai controlli.The consistent interface provided by the BindingSource component greatly simplifies the process of binding data to controls. Per i tipi di origini che forniscono la notifica di modifica di BindingSource componente comunica automaticamente le modifiche tra il controllo e l'origine dati.For data-source types that provide change notification, the BindingSource component automatically communicates changes between the control and the data source. Per i tipi di origine dati che non forniscono la notifica delle modifiche, vengono forniti eventi che consentono di generare notifiche di modifica.For data-source types that do not provide change notification, events are provided that let you raise change notifications. L'elenco seguente illustra le funzionalità supportate dal BindingSource componente:The following list shows the features supported by the BindingSource component:

Riferimento indirettoIndirection

Il BindingSource componente fornisce un livello di riferimento indiretto tra un controllo e un'origine dati.The BindingSource component provides a level of indirection between a control and a data source. Anziché associare un controllo direttamente a un'origine dati, associare il controllo a un BindingSource, e si collega l'origine dati per il BindingSource del componente DataSource proprietà.Instead of binding a control directly to a data source, you bind the control to a BindingSource, and you attach the data source to the BindingSource component's DataSource property.

Con questo livello di riferimento indiretto, è possibile modificare l'origine dati senza reimpostare l'associazione del controllo.With this level of indirection, you can change the data source without resetting the control binding. In questo modo le funzionalità seguenti:This gives you the following capabilities:

Gestione di valutaCurrency Management

Il BindingSource componente implementa il ICurrencyManagerProvider interfaccia per la gestione per la gestione.The BindingSource component implements the ICurrencyManagerProvider interface to handle currency management for you. Con il ICurrencyManagerProvider interfaccia, è inoltre possibile accedere all'oggetto CurrencyManager per un BindingSource, oltre il gestore della valuta per un altro BindingSource associati alla stessa DataMember.With the ICurrencyManagerProvider interface, you can also access to the currency manager for a BindingSource, in addition to the currency manager for another BindingSource bound to the same DataMember.

Il BindingSource componente incapsula CurrencyManager funzionalità ed espone i più comuni CurrencyManager proprietà ed eventi.The BindingSource component encapsulates CurrencyManager functionality and exposes the most common CurrencyManager properties and events. Nella tabella seguente vengono descritti alcuni dei membri relativi alla gestione di valuta.The following table describes some of the members related to currency management.

Proprietà CurrencyManagerCurrencyManager property
Ottiene l'oggetto CurrencyManager associato il BindingSource.Gets the currency manager associated with the BindingSource.

Metodo GetRelatedCurrencyManagerGetRelatedCurrencyManager method
Se esiste un altro BindingSource associata al membro dati specificato, ottiene l'oggetto CurrencyManager.If there is another BindingSource bound to the specified data member, gets its currency manager.

Proprietà CurrentCurrent property
Ottiene l'elemento corrente dell'origine dati.Gets the current item of the data source.

Proprietà PositionPosition property
Ottiene o imposta la posizione corrente nell'elenco sottostante.Gets or sets the current position in the underlying list.

Metodo EndEditEndEdit method
Applica le modifiche in sospeso all'origine dati sottostante.Applies pending changes to the underlying data source.

Metodo CancelEditCancelEdit method
Annulla l'operazione di modifica corrente.Cancels the current edit operation.

Origine dati sotto forma di elencoData Source as a List

Il BindingSource componente implementa il IBindingListView e ITypedList interfacce.The BindingSource component implements the IBindingListView and ITypedList interfaces. Con questa implementazione, è possibile utilizzare il BindingSource componente stesso come un'origine dati, senza archivio esterno.With this implementation, you can use the BindingSource component itself as a data source, without any external storage.

Quando il BindingSource componente è collegato a un'origine dati, che espone l'origine dati sotto forma di elenco.When the BindingSource component is attached to a data source, it exposes the data source as a list.

Il DataSource proprietà può essere impostata su diverse origini dati.The DataSource property can be set to several data sources. Tra i tipi di oggetti e gli elenchi di tipi.These include types, objects, and lists of types. L'origine dati risultante verrà esposta come elenco.The resulting data source will be exposed as a list. Nella tabella seguente vengono illustrate alcune delle origini dati comuni e la valutazione dell'elenco risultante.The following table shows some of the common data sources and the resulting list evaluation.

Proprietà DataSourceDataSource property Elenco risultatiList results
Riferimento null (Nothing in Visual Basic)A null reference (Nothing in Visual Basic) Un oggetto vuoto IBindingList di oggetti.An empty IBindingList of objects. Aggiunta di un elemento imposta l'elenco per il tipo dell'elemento aggiunto.Adding an item sets the list to the type of the added item.
Un riferimento null (Nothing in Visual Basic) con DataMember impostatoA null reference (Nothing in Visual Basic) with DataMember set Non è supportato. Genera ArgumentException.Not supported; raises ArgumentException.
Tipo non di elenco o un oggetto di tipo "T"Non-list type or object of type "T" Un oggetto vuoto IBindingList di tipo "T".An empty IBindingList of type "T".
Istanza di matriceArray instance Un IBindingList contenente gli elementi della matrice.An IBindingList containing the array elements.
IEnumerable IstanzaIEnumerable instance Un IBindingList contenente il IEnumerable elementiAn IBindingList containing the IEnumerable items
Elenco contenente il tipo di istanza "T"List instance containing type "T" Un IBindingList istanza contenente il tipo "T".An IBindingList instance containing type "T".

Inoltre, DataSource può essere impostata su altri tipi di elenco, ad esempio IListSource e ITypedListe BindingSource li gestirà in modo appropriato.Additionally, DataSource can be set to other list types, such as IListSource and ITypedList, and the BindingSource will handle them appropriately. In questo caso, il tipo di contenuto nell'elenco deve avere un costruttore predefinito.In this case, the type that is contained in the list should have a default constructor.

BindingSource come un elemento IBindingListBindingSource as an IBindingList

Il BindingSource componente fornisce membri per l'accesso e la manipolazione dei dati sottostanti come un IBindingList.The BindingSource component provides members for accessing and manipulating the underlying data as an IBindingList. Nella tabella seguente vengono descritti alcuni di questi membri.The following table describes some of these members.

MemberMember DescrizioneDescription
Proprietà ListList property Ottiene l'elenco risultante dalla valutazione del DataSource o DataMember proprietà.Gets the list that results from the evaluation of the DataSource or DataMember properties.
Metodo AddNewAddNew method Aggiunge un nuovo elemento all'elenco sottostante.Adds a new item to the underlying list. Si applica a origini dati che implementano il IBindingList l'interfaccia e consentire l'aggiunta di elementi (vale a dire il AllowNew è impostata su true).Applies to data sources that implement the IBindingList interface and allow adding items (that is, the AllowNew property is set to true).

Creazione di un elemento personalizzatoCustom Item Creation

È possibile gestire il AddingNew evento per fornire la logica di creazione degli elementi.You can handle the AddingNew event to provide your own item-creation logic. Il AddingNew evento si verifica prima dell'aggiunta di un nuovo oggetto di BindingSource.The AddingNew event occurs before a new object is added to the BindingSource. Questo evento viene generato dopo il AddNew metodo viene chiamato, ma prima che il nuovo elemento viene aggiunto all'elenco sottostante.This event is raised after the AddNew method is called, but before the new item is added to the underlying list. La gestione dell'evento, è possibile fornire il comportamento di creazione di un elemento personalizzato senza derivazione da di BindingSource classe.By handling this event, you can provide custom item creation behavior without deriving from the BindingSource class. Per ulteriori informazioni, vedere procedura: personalizzare aggiunta di elementi con BindingSource Windows Form.For more information, see How to: Customize Item Addition with the Windows Forms BindingSource.

Creazione di elementi transazionaleTransactional Item Creation

Il BindingSource componente implementa il ICancelAddNew interfaccia, che consente la creazione di un articolo transazionale.The BindingSource component implements the ICancelAddNew interface, which enables transactional item creation. Dopo che è temporaneamente creato un nuovo elemento con una chiamata a AddNew, l'aggiunta può essere eseguito il commit o rollback nei modi seguenti:After a new item is provisionally created by using a call to AddNew, the addition may be committed or rolled back in the following ways:

  • Il EndNew metodo eseguirà il commit in modo esplicito l'aggiunta in sospeso.The EndNew method will explicitly commit the pending addition.

  • Esecuzione di un'altra operazione di raccolta, ad esempio un inserimento, rimozione o spostamento, in modo implicito eseguirà il commit dell'operazione di aggiunta.Performing another collection operation, such as an insertion, removal, or move, will implicitly commit the pending addition.

  • Il CancelNew metodo eseguirà il rollback dell'aggiunta in sospeso se il metodo non è già stato eseguito il commit.The CancelNew method will roll back the pending addition if the method has not already been committed.

Supporto di IEnumerableIEnumerable Support

Il BindingSource componente consente l'associazione dei controlli IEnumerable origini dati.The BindingSource component enables binding controls to IEnumerable data sources. Con questo componente, è possibile associare a un'origine dati, ad esempio un System.Data.SqlClient.SqlDataReader.With this component, you can bind to a data source such as a System.Data.SqlClient.SqlDataReader.

Quando un IEnumerable origine dati viene assegnata al BindingSource componente, il BindingSource crea un IBindingList e aggiunge il contenuto del IEnumerable origine dati nell'elenco.When an IEnumerable data source is assigned to the BindingSource component, the BindingSource creates an IBindingList and adds the contents of the IEnumerable data source to the list.

Supporto in fase di progettazioneDesign-Time Support

Alcuni tipi di oggetto non possono essere creati in fase di progettazione, ad esempio gli oggetti creati da una classe factory o gli oggetti restituiti da un servizio Web.Some object types cannot be created at design time, such as objects created from a factory class, or objects returned by a Web service. In alcuni casi è possibile associare i controlli a questi tipi in fase di progettazione, anche se è presente alcun oggetto in memoria a cui è possibile associare i controlli.You may sometimes have to bind your controls to these types at design time, even though there is no object in memory to which your controls can bind. Potrebbe, ad esempio, devi etichettare le intestazioni di colonna di un DataGridView controllo con i nomi delle proprietà pubbliche del tipo personalizzato.You may, for example, need to label the column headers of a DataGridView control with the names of your custom type's public properties.

Per supportare questo scenario, il BindingSource componente supporta l'associazione a un Type.To support this scenario, the BindingSource component supports binding to a Type. Quando si assegna un Type per il DataSource proprietà, il BindingSource componente crea un oggetto vuoto BindingList<T> di Type elementi.When you assign a Type to the DataSource property, the BindingSource component creates an empty BindingList<T> of Type items. Tutti i controlli associati a successivamente il BindingSource componente riceverà un avviso per la presenza delle proprietà dello schema del tipo in fase di progettazione o in fase di esecuzione.Any controls you subsequently bind to the BindingSource component will be alerted to the presence of the properties or schema of your type at design time, or at run time. Per ulteriori informazioni, vedere procedura: associare un controllo Windows Form a un tipo.For more information, see How to: Bind a Windows Forms Control to a Type.

Metodi ListBindingHelper staticStatic ListBindingHelper Methods

Il System.Windows.Forms.BindingContext, System.Windows.Forms.CurrencyManager, e BindingSource tipi condividono tutti una logica comune per generare un elenco da un DataSource / DataMember coppia.The System.Windows.Forms.BindingContext, System.Windows.Forms.CurrencyManager, and BindingSource types all share common logic to generate a list from a DataSource/DataMember pair. Inoltre, questa logica comune viene esposta pubblicamente per l'utilizzo dagli autori di controllo e di terze parti nell'esempio seguente static metodi:Additionally, this common logic is publicly exposed for use by control authors and other third parties in the following static methods:

Ordinamento e filtro con l'interfaccia IBindingListViewSorting and Filtering with the IBindingListView Interface

Il BindingSource componente implementa il IBindingListView interfaccia, che estende il IBindingList interfaccia.The BindingSource component implements the IBindingListView interface, which extends the IBindingList interface. Il IBindingList offre una singola colonna di ordinamento e il IBindingListView offre avanzate di ordinamento e filtro.The IBindingList offers single column sorting and the IBindingListView offers advanced sorting and filtering. Con IBindingListView, è possibile ordinare e filtrare gli elementi nell'origine dati, se l'origine dati anche implementa una di queste interfacce.With IBindingListView, you can sort and filter items in the data source, if the data source also implements one of these interfaces. Il BindingSource componente non fornisce un'implementazione di riferimento di questi membri.The BindingSource component does not provide a reference implementation of these members. Al contrario, le chiamate vengono inoltrate all'elenco sottostante.Instead, calls are forwarded to the underlying list.

Nella tabella seguente vengono descritte le proprietà utilizzate per l'ordinamento e filtro.The following table describes the properties you use for sorting and filtering.

MemberMember DescrizioneDescription
Proprietà FilterFilter property Se l'origine dati è un IBindingListView, ottiene o imposta l'espressione usata per filtrare le righe da visualizzare.If the data source is an IBindingListView, gets or sets the expression used to filter which rows are viewed.
Proprietà SortSort property Se l'origine dati è un IBindingList, ottiene o imposta un nome di colonna usato per l'ordinamento e il criterio di ordinamento.If the data source is an IBindingList, gets or sets a column name used for sorting and sort order information.

oppure-or-

Se l'origine dati è un IBindingListView e supporta l'ordinamento avanzato, ottiene più nomi di colonna usati per l'ordinamento e di ordinamentoIf the data source is an IBindingListView and supports advanced sorting, gets multiple column names used for sorting and sort order

Integrazione con BindingNavigatorIntegration with BindingNavigator

È possibile utilizzare il BindingSource componente per associare qualsiasi controllo Windows Form a un'origine dati, ma la BindingNavigator controllo è progettato specificamente per l'utilizzo di BindingSource componente.You can use the BindingSource component to bind any Windows Forms control to a data source, but the BindingNavigator control is designed specifically to work with the BindingSource component. Il BindingNavigator controllo fornisce un'interfaccia utente per il controllo di BindingSource elemento corrente del componente.The BindingNavigator control provides a user interface for controlling the BindingSource component's current item. Per impostazione predefinita, il BindingNavigator controllo fornisce pulsanti che corrispondono ai metodi di navigazione nel BindingSource componente.By default, the BindingNavigator control provides buttons that correspond to the navigation methods on the BindingSource component. Per ulteriori informazioni, vedere procedura: passare dati con il controllo BindingNavigator Windows Form.For more information, see How to: Navigate Data with the Windows Forms BindingNavigator Control.

Vedere ancheSee Also

BindingSource
BindingNavigator
Cenni preliminari sul componente BindingSourceBindingSource Component Overview
Controllo BindingNavigatorBindingNavigator Control
Data binding in Windows FormWindows Forms Data Binding
Controlli da usare in Windows FormControls to Use on Windows Forms
Procedura: Associare un controllo di Windows Form a un tipoHow to: Bind a Windows Forms Control to a Type
Procedura: riflettere gli aggiornamenti dell'origine dati in un controllo Windows Form con BindingSourceHow to: Reflect Data Source Updates in a Windows Forms Control with the BindingSource