BindingSource Klasa

Definicja

Hermetyzuje źródło danych dla formularza.

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
Dziedziczenie
Atrybuty
Implementuje

Przykłady

W poniższym przykładzie kodu pokazano ListBox powiązanie z elementem BindingSource. Element BindingSource jest powiązany z obiektem BindingList<T> zawierającym listę czcionek.

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

Uwagi

Składnik BindingSource służy do wielu celów. Po pierwsze, upraszcza powiązanie kontrolek formularza z danymi, zapewniając zarządzanie walutą, powiadamianie o zmianach i inne usługi między kontrolkami Windows Forms a źródłami danych. Jest to realizowane przez dołączenie BindingSource składnika do źródła danych przy użyciu DataSource właściwości . W przypadku złożonych scenariuszy powiązań można opcjonalnie ustawić DataMember właściwość na określoną kolumnę lub listę w źródle danych. Następnie powiążesz kontrolki z elementem BindingSource. Cała dalsza interakcja z danymi jest realizowana za pomocą wywołań do BindingSource składnika. Aby zapoznać się z przykładami dotyczącymi tego, jak BindingSource można uprościć proces wiązania powiązania, zobacz How to: Bind Windows Forms Controls to DBNull Database Values (Instrukcje: obsługa błędów i wyjątków występujących z powiązaniem danych). Nawigacja i aktualizowanie źródła danych odbywa się za pomocą metod, takich jak MoveNext, MoveLasti Remove. Operacje, takie jak sortowanie i filtrowanie, są obsługiwane za pośrednictwem Sort właściwości i Filter . Aby uzyskać więcej informacji na temat sortowania i filtrowania za pomocą elementu BindingSource, zobacz How to Sort and Filter ADO.NET Data with the Windows Forms BindingSource Component (Instrukcje: sortowanie i filtrowanie danych za pomocą składnika Windows Forms BindingSource).

Ponadto BindingSource składnik może działać jako silnie typizowane źródło danych. Typ bazowego źródła danych jest zwykle ustalany za pomocą jednego z następujących mechanizmów:

  • Add Użyj metody , aby dodać element do BindingSource składnika.

  • DataSource Ustaw właściwość na listę, pojedynczy obiekt lub typ.

Oba te mechanizmy tworzą silnie typizowana listę. Aby uzyskać więcej informacji na temat używania elementu BindingSource do tworzenia powiązania z typem, zobacz How to: Bind a Windows Forms Control to a Type (Jak powiązać kontrolkę Windows Forms z typem). Można również użyć elementu , BindingSource aby powiązać kontrolki z obiektem fabryki. Aby uzyskać więcej informacji o tym, jak to zrobić, zobacz How to: Bind a Windows Forms Control to a Factory Object (Jak powiązać kontrolkę Windows Forms z obiektem fabryki).

Uwaga

BindingSource Ponieważ obsługuje zarówno proste, jak i złożone źródła danych, terminologia jest problematyczna. W tej dokumentacji klasy lista terminów odnosi się do kolekcji danych w hostowanym źródle danych, a element oznacza jeden element. Podczas omawiania funkcji skojarzonych ze złożonymi źródłami danych używane są równoważne terminy tabeli i wiersza .

BindingSource udostępnia elementy członkowskie do uzyskiwania dostępu do danych bazowych. Bieżący element można pobrać za pomocą Current właściwości , a cała lista może zostać pobrana za pośrednictwem List właściwości . Operacje edycji są obsługiwane w bieżącym elemencie za pomocą Current metod , CancelEdit EndEditi oraz AddNew Add .RemoveCurrent Mimo że zarządzanie walutą jest obsługiwane automatycznie dla wszystkich bazowych typów źródeł danych, ta klasa uwidacznia wiele zdarzeń, takich jak CurrentItemChanged i DataSourceChanged, które umożliwiają dostosowanie.

Źródła danych powiązane ze składnikiem BindingSource można również nawigować i zarządzać nimi za BindingNavigator pomocą klasy , która udostępnia interfejs użytkownika podobny do wirtualnego rozpoznawania znaków na potrzeby nawigowania po elementach na liście. Chociaż BindingNavigator może być powiązana z dowolnym źródłem danych, została zaprojektowana do integracji ze składnikiem BindingSource za pośrednictwem jego BindingNavigator.BindingSource właściwości.

Domyślną właściwością BindingSource klasy jest DataSource. Domyślnym zdarzeniem jest CurrentChanged.

Przestroga

Wiele elementów członkowskich BindingSource klasy działa na liście bazowej reprezentowanej przez List właściwość i po prostu odwołuje się do jej operacji na liście bazowej. W związku z tym, gdy element BindingSource jest powiązany z niestandardową implementacją IListelementu , dokładne zachowanie tych elementów członkowskich może różnić się od zachowania opisanego w dokumentacji klasy. Na przykład metoda wywołuje IList.RemoveAtmetodę RemoveAt . W BindingSource dokumentacji opisano metodę RemoveAt z zrozumieniem, że RemoveAt metoda dla bazowego IList jest poprawnie zaimplementowana.

Konstruktory

BindingSource()

Inicjuje BindingSource nowe wystąpienie klasy do domyślnych wartości właściwości.

BindingSource(IContainer)

Inicjuje BindingSource nowe wystąpienie klasy i dodaje element BindingSource do określonego kontenera.

BindingSource(Object, String)

Inicjuje BindingSource nowe wystąpienie klasy z określonym źródłem danych i elementem członkowskim danych.

Właściwości

AllowEdit

Pobiera wartość wskazującą, czy elementy na liście bazowej można edytować.

AllowNew

Pobiera lub ustawia wartość wskazującą, czy AddNew() metoda może służyć do dodawania elementów do listy.

AllowRemove

Pobiera wartość wskazującą, czy elementy można usunąć z listy bazowej.

CanRaiseEvents

Pobiera wartość wskazującą, czy składnik może zgłosić zdarzenie.

(Odziedziczone po Component)
Container

Pobiera element IContainer zawierający element Component.

(Odziedziczone po Component)
Count

Pobiera całkowitą liczbę elementów na liście bazowej, biorąc pod uwagę bieżącą Filter wartość.

CurrencyManager

Pobiera menedżera waluty skojarzonego z tym BindingSource.

Current

Pobiera bieżący element na liście.

DataMember

Pobiera lub ustawia określoną listę w źródle danych, z którym łącznik jest obecnie powiązany.

DataSource

Pobiera lub ustawia źródło danych powiązane z łącznikiem.

DesignMode

Pobiera wartość wskazującą, czy Component element jest obecnie w trybie projektowania.

(Odziedziczone po Component)
Events

Pobiera listę programów obsługi zdarzeń dołączonych do tego Componentelementu .

(Odziedziczone po Component)
Filter

Pobiera lub ustawia wyrażenie używane do filtrowania wyświetlanych wierszy.

IsBindingSuspended

Pobiera wartość wskazującą, czy powiązanie listy jest zawieszone.

IsFixedSize

Pobiera wartość wskazującą, czy lista bazowa ma stały rozmiar.

IsReadOnly

Pobiera wartość wskazującą, czy lista bazowa jest tylko do odczytu.

IsSorted

Pobiera wartość wskazującą, czy elementy na liście bazowej są sortowane.

IsSynchronized

Pobiera wartość wskazującą, czy dostęp do kolekcji jest synchronizowany (bezpieczny wątek).

Item[Int32]

Pobiera lub ustawia element listy w określonym indeksie.

List

Pobiera listę, z którą jest powiązany łącznik.

Position

Pobiera lub ustawia indeks bieżącego elementu na liście bazowej.

RaiseListChangedEvents

Pobiera lub ustawia wartość wskazującą, czy ListChanged zdarzenia powinny być zgłaszane.

Site

Pobiera lub ustawia ISite element .Component

(Odziedziczone po Component)
Sort

Pobiera lub ustawia nazwy kolumn używane do sortowania oraz kolejność sortowania do wyświetlania wierszy w źródle danych.

SortDescriptions

Pobiera kolekcję opisów sortowania zastosowanych do źródła danych.

SortDirection

Pobiera kierunek sortowania elementów na liście.

SortProperty

Pobiera element PropertyDescriptor używany do sortowania listy.

SupportsAdvancedSorting

Pobiera wartość wskazującą, czy źródło danych obsługuje sortowanie wielokolumne.

SupportsChangeNotification

Pobiera wartość wskazującą, czy źródło danych obsługuje powiadomienie o zmianie.

SupportsFiltering

Pobiera wartość wskazującą, czy źródło danych obsługuje filtrowanie.

SupportsSearching

Pobiera wartość wskazującą, czy źródło danych obsługuje wyszukiwanie za Find(PropertyDescriptor, Object) pomocą metody .

SupportsSorting

Pobiera wartość wskazującą, czy źródło danych obsługuje sortowanie.

SyncRoot

Pobiera obiekt, który może służyć do synchronizowania dostępu do bazowej listy.

Metody

Add(Object)

Dodaje istniejący element do listy wewnętrznej.

AddNew()

Dodaje nowy element do listy bazowej.

ApplySort(ListSortDescriptionCollection)

Sortuje źródło danych z określonymi opisami sortowania.

ApplySort(PropertyDescriptor, ListSortDirection)

Sortuje źródło danych przy użyciu deskryptora określonej właściwości i kierunku sortowania.

CancelEdit()

Anuluje bieżącą operację edycji.

Clear()

Usuwa wszystkie elementy z listy.

Contains(Object)

Określa, czy obiekt jest elementem na liście.

CopyTo(Array, Int32)

Kopiuje zawartość List obiektu do określonej tablicy, zaczynając od określonej wartości indeksu.

CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
Dispose()

Zwalnia wszelkie zasoby używane przez element Component.

(Odziedziczone po Component)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element BindingSource i opcjonalnie zwalnia zasoby zarządzane.

EndEdit()

Stosuje oczekujące zmiany do bazowego źródła danych.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
Find(PropertyDescriptor, Object)

Wyszukuje indeks elementu zawierającego dany deskryptor właściwości.

Find(String, Object)

Zwraca indeks elementu na liście z określoną nazwą właściwości i wartością.

GetEnumerator()

Pobiera moduł wyliczający dla elementu List.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetItemProperties(PropertyDescriptor[])

Pobiera tablicę PropertyDescriptor obiektów reprezentujących powiązane właściwości typu listy źródła danych.

GetLifetimeService()
Nieaktualne.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetListName(PropertyDescriptor[])

Pobiera nazwę listy dostarczającej dane dla powiązania.

GetRelatedCurrencyManager(String)

Pobiera powiązanego menedżera waluty dla określonego elementu członkowskiego danych.

GetService(Type)

Zwraca obiekt reprezentujący usługę dostarczaną przez Component obiekt lub przez obiekt Container.

(Odziedziczone po Component)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IndexOf(Object)

Wyszukuje określony obiekt i zwraca indeks pierwszego wystąpienia na całej liście.

InitializeLifetimeService()
Nieaktualne.

Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
Insert(Int32, Object)

Wstawia element do listy w określonym indeksie.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
MoveFirst()

Przenosi się do pierwszego elementu na liście.

MoveLast()

Przechodzi do ostatniego elementu na liście.

MoveNext()

Przechodzi do następnego elementu na liście.

MovePrevious()

Przenosi się do poprzedniego elementu na liście.

OnAddingNew(AddingNewEventArgs)

AddingNew Zgłasza zdarzenie.

OnBindingComplete(BindingCompleteEventArgs)

BindingComplete Zgłasza zdarzenie.

OnCurrentChanged(EventArgs)

CurrentChanged Zgłasza zdarzenie.

OnCurrentItemChanged(EventArgs)

CurrentItemChanged Zgłasza zdarzenie.

OnDataError(BindingManagerDataErrorEventArgs)

DataError Zgłasza zdarzenie.

OnDataMemberChanged(EventArgs)

DataMemberChanged Zgłasza zdarzenie.

OnDataSourceChanged(EventArgs)

DataSourceChanged Zgłasza zdarzenie.

OnListChanged(ListChangedEventArgs)

ListChanged Zgłasza zdarzenie.

OnPositionChanged(EventArgs)

PositionChanged Zgłasza zdarzenie.

Remove(Object)

Usuwa określony element z listy.

RemoveAt(Int32)

Usuwa element z określonego indeksu na liście.

RemoveCurrent()

Usuwa bieżący element z listy.

RemoveFilter()

Usuwa filtr skojarzony z elementem BindingSource.

RemoveSort()

Usuwa sortowanie skojarzone z elementem BindingSource.

ResetAllowNew()

Ponownie inicjuje AllowNew właściwość .

ResetBindings(Boolean)

Powoduje, że kontrolka powiązana z elementem BindingSource , aby ponownie odczytać wszystkie elementy na liście i odświeżyć wyświetlane wartości.

ResetCurrentItem()

Powoduje, że BindingSource kontrolka powiązana z kontrolką, aby ponownie odczytać aktualnie wybrany element i odświeżyć wyświetlaną wartość.

ResetItem(Int32)

Powoduje, że BindingSource kontrolka powiązana z elementem jest ponownie odczytywana w określonym indeksie i odświeża wyświetlaną wartość.

ResumeBinding()

Wznawia powiązanie danych.

SuspendBinding()

Zawiesza powiązanie danych, aby zapobiec aktualizowaniu powiązanego źródła danych przez zmiany.

ToString()

Zwraca wartość String zawierającą nazwę Componentobiektu , jeśli istnieje. Ta metoda nie powinna być zastępowana.

(Odziedziczone po Component)

Zdarzenia

AddingNew

Występuje przed dodaniu elementu do listy bazowej.

BindingComplete

Występuje, gdy wszyscy klienci zostali powiązani z tym BindingSourceelementem .

CurrentChanged

Występuje, gdy aktualnie powiązany element ulegnie zmianie.

CurrentItemChanged

Występuje, gdy wartość Current właściwości została zmieniona.

DataError

Występuje, gdy wyjątek związany z walutą jest w trybie dyskretnym obsługiwanym przez element BindingSource.

DataMemberChanged

Występuje, gdy DataMember wartość właściwości uległa zmianie.

DataSourceChanged

Występuje, gdy DataSource wartość właściwości uległa zmianie.

Disposed

Występuje, gdy składnik jest usuwany przez wywołanie Dispose() metody .

(Odziedziczone po Component)
ListChanged

Występuje, gdy lista bazowa zmienia się lub zmienia element na liście.

PositionChanged

Występuje po zmianie wartości Position właściwości.

Jawne implementacje interfejsu

IBindingList.AddIndex(PropertyDescriptor)

Dodaje element PropertyDescriptor do indeksów używanych do wyszukiwania.

IBindingList.RemoveIndex(PropertyDescriptor)

Usuwa element PropertyDescriptor z indeksów używanych do wyszukiwania.

ICancelAddNew.CancelNew(Int32)

Odrzuca oczekujący nowy element z kolekcji.

ICancelAddNew.EndNew(Int32)

Zatwierdza oczekujący nowy element do kolekcji.

ISupportInitialize.BeginInit()

Sygnalizuje BindingSource , że rozpoczyna się inicjowanie.

ISupportInitialize.EndInit()

Sygnalizuje ukończenie BindingSource inicjowania.

ISupportInitializeNotification.Initialized

Występuje, gdy element BindingSource jest inicjowany.

ISupportInitializeNotification.IsInitialized

Pobiera wartość wskazującą BindingSource , czy element jest inicjowany.

Metody rozszerzania

Cast<TResult>(IEnumerable)

Rzutuje elementy elementu IEnumerable na określony typ.

OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable elementu na podstawie określonego typu.

AsParallel(IEnumerable)

Umożliwia równoległość zapytania.

AsQueryable(IEnumerable)

Konwertuje element IEnumerable na .IQueryable

Dotyczy

Zobacz też