BindingSource Classe

Definizione

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.

Si applica a

Vedi anche