BindingSource Třída

Definice

Zapouzdřuje zdroj dat pro formulář.

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
Dědičnost
Atributy
Implementuje

Příklady

Následující příklad kódu ukazuje ListBox vazbu na BindingSource. Je BindingSource svázaný s objektem BindingList<T> , který obsahuje seznam písem.

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

Poznámky

Komponenta BindingSource slouží k mnoha účelům. Zaprvé, zjednodušuje vytváření vazeb ovládacích prvků formuláře na data tím, že poskytuje správu měny, oznámení o změnách a další služby mezi ovládacími prvky model Windows Forms a zdroji dat. Toho se dosáhne připojením BindingSource komponenty ke zdroji dat pomocí DataSource vlastnosti . U složitých scénářů vazeb můžete volitelně nastavit DataMember vlastnost na konkrétní sloupec nebo seznam ve zdroji dat. Potom svážete ovládací prvky s objektem BindingSource. Veškerá další interakce s daty se provádí pomocí volání BindingSource komponenty . Příklady toho, jak BindingSource může zjednodušit proces vazby, najdete v tématech Postupy: Vytvoření vazby ovládacích prvků model Windows Forms k hodnotám databáze DBNull a Postupy: Zpracování chyb a výjimek, ke kterým dochází u datové vazby. Navigace a aktualizace zdroje dat se provádí pomocí metod, jako MoveNextjsou , MoveLasta Remove. Operace, jako je řazení a filtrování, se zpracovávají prostřednictvím Sort vlastností a Filter . Další informace o použití řazení a filtrování s nástrojem najdete v BindingSourcetématu Postupy: Řazení a filtrování ADO.NET dat pomocí komponenty model Windows Forms BindingSource.

Kromě toho může komponenta BindingSource fungovat jako zdroj dat silného typu. Typ podkladového zdroje dat se obvykle stanoví pomocí jednoho z následujících mechanismů:

  • Add K přidání položky do komponenty použijte metodu BindingSource .

  • DataSource Nastavte vlastnost na seznam, jeden objekt nebo typ.

Oba tyto mechanismy vytvářejí seznam silného typu. Další informace o použití k vytvoření BindingSource vazby k typu najdete v tématu Postupy: Vytvoření vazby ovládacího prvku model Windows Forms k typu. Můžete také použít k vytvoření vazby BindingSource ovládacích prvků na objekt továrny. Další informace o tom, jak to udělat, najdete v tématu Postupy: Vytvoření vazby ovládacího prvku model Windows Forms k objektu Factory.

Poznámka

Vzhledem k tomu, že objekt BindingSource zpracovává jednoduché i složité zdroje dat, je terminologie problematická. V rámci této dokumentace ke třídě odkazuje seznam termínů na kolekci dat v rámci hostovaného zdroje dat a položka označuje jeden prvek. Při diskuzi o funkcích spojených se složitými zdroji dat se používají ekvivalentní termíny tabulka a řádek .

BindingSource poskytuje členům přístup k podkladovým datům. Aktuální položku lze načíst prostřednictvím Current vlastnosti a celý seznam lze načíst prostřednictvím List vlastnosti . Operace úprav se u aktuální položky podporují prostřednictvím Current metod , RemoveCurrentCancelEditEndEdita Add a .AddNew Přestože se správa měn zpracovává automaticky pro všechny typy podkladových zdrojů dat, tato třída zveřejňuje řadu událostí, jako CurrentItemChanged jsou a DataSourceChanged, které umožňují přizpůsobení.

Zdroje dat, které jsou vázané na komponentu BindingSource , lze také procházet a spravovat pomocí BindingNavigator třídy , která poskytuje uživatelské rozhraní podobné VCR pro navigaci po položkách v seznamu. I když BindingNavigator může být svázaná s libovolným zdrojem dat, byla navržena tak, aby se integrovala se komponentou BindingSource prostřednictvím své BindingNavigator.BindingSource vlastnosti.

Výchozí vlastnost třídy BindingSource je DataSource. Výchozí událost je CurrentChanged.

Upozornění

Mnoho členů BindingSource třídy pracuje s podkladovým seznamem reprezentovaným List vlastností a jednoduše odkazují svou operaci na podkladový seznam. Proto, pokud BindingSource je vázána na vlastní implementaci IList, přesné chování těchto členů se může lišit od chování popsaného v dokumentaci třídy. Metoda například RemoveAt volá IList.RemoveAt. Dokumentace BindingSource popisuje metodu RemoveAt s tím, že RemoveAt je metoda pro podkladovou IList metodu správně implementována.

Konstruktory

BindingSource()

Inicializuje novou instanci BindingSource třídy na výchozí hodnoty vlastnosti.

BindingSource(IContainer)

Inicializuje novou instanci BindingSource třídy a přidá do BindingSource zadaného kontejneru.

BindingSource(Object, String)

Inicializuje novou instanci BindingSource třídy se zadaným zdrojem dat a datovým členem.

Vlastnosti

AllowEdit

Získá hodnotu označující, zda položky v podkladovém seznamu lze upravit.

AllowNew

Získá nebo nastaví hodnotu určující, zda metodu AddNew() lze použít k přidání položek do seznamu.

AllowRemove

Získá hodnotu označující, zda lze položky odebrat z podkladového seznamu.

CanRaiseEvents

Získá hodnotu označující, zda komponenta může vyvolat událost.

(Zděděno od Component)
Container

Získá objekt IContainer , který obsahuje Component.

(Zděděno od Component)
Count

Získá celkový počet položek v podkladovém seznamu s ohledem na aktuální Filter hodnotu.

CurrencyManager

Získá správce měny přidružené k tomuto BindingSource.

Current

Získá aktuální položku v seznamu.

DataMember

Získá nebo nastaví konkrétní seznam ve zdroji dat, ke kterému se konektor aktuálně sváže.

DataSource

Získá nebo nastaví zdroj dat, se kterým konektor vytvoří vazbu.

DesignMode

Získá hodnotu, která označuje, zda je aktuálně v režimu návrhu Component .

(Zděděno od Component)
Events

Získá seznam obslužných rutin událostí, které jsou připojeny k tomuto Component.

(Zděděno od Component)
Filter

Získá nebo nastaví výraz použitý k filtrování, které řádky jsou zobrazeny.

IsBindingSuspended

Získá hodnotu označující, zda je pozastavena vazba seznamu.

IsFixedSize

Získá hodnotu označující, zda podkladový seznam má pevnou velikost.

IsReadOnly

Získá hodnotu označující, zda je podkladový seznam jen pro čtení.

IsSorted

Získá hodnotu označující, zda jsou položky v podkladovém seznamu seřazeny.

IsSynchronized

Získá hodnotu označující, zda je synchronizován přístup ke kolekci (bez vláken).

Item[Int32]

Získá nebo nastaví list element v zadaném indexu.

List

Získá seznam, ke kterému je konektor vázán.

Position

Získá nebo nastaví index aktuální položky v podkladovém seznamu.

RaiseListChangedEvents

Získá nebo nastaví hodnotu určující, zda ListChanged mají být vyvolány události.

Site

Získá nebo nastaví ISite hodnotu Component.

(Zděděno od Component)
Sort

Získá nebo nastaví názvy sloupců používané pro řazení a pořadí řazení pro zobrazení řádků ve zdroji dat.

SortDescriptions

Získá kolekci popisů řazení použitých na zdroj dat.

SortDirection

Získá směr řazení položek v seznamu.

SortProperty

Získá, PropertyDescriptor který se používá pro řazení seznamu.

SupportsAdvancedSorting

Získá hodnotu označující, zda zdroj dat podporuje řazení více sloupců.

SupportsChangeNotification

Získá hodnotu označující, zda zdroj dat podporuje oznámení o změnách.

SupportsFiltering

Získá hodnotu označující, zda zdroj dat podporuje filtrování.

SupportsSearching

Získá hodnotu označující, zda zdroj dat podporuje vyhledávání pomocí Find(PropertyDescriptor, Object) metody .

SupportsSorting

Získá hodnotu označující, zda zdroj dat podporuje řazení.

SyncRoot

Získá objekt, který lze použít k synchronizaci přístupu k podkladovému seznamu.

Metody

Add(Object)

Přidá existující položku do interního seznamu.

AddNew()

Přidá novou položku do podkladového seznamu.

ApplySort(ListSortDescriptionCollection)

Seřadí zdroj dat podle zadaných popisů řazení.

ApplySort(PropertyDescriptor, ListSortDirection)

Seřadí zdroj dat pomocí zadaného popisovače vlastností a směru řazení.

CancelEdit()

Zruší aktuální operaci úprav.

Clear()

Odebere ze seznamu všechny prvky.

Contains(Object)

Určuje, zda je objekt položkou v seznamu.

CopyTo(Array, Int32)

Zkopíruje obsah objektu List do zadaného pole počínaje zadanou hodnotou indexu.

CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy používaného ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
Dispose()

Uvolní všechny prostředky používané nástrojem Component.

(Zděděno od Component)
Dispose(Boolean)

Uvolní nespravované prostředky používané BindingSource nástrojem a volitelně uvolní spravované prostředky.

EndEdit()

Použije čekající změny v podkladovém zdroji dat.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
Find(PropertyDescriptor, Object)

Vyhledá index položky, která má daný popisovač vlastnosti.

Find(String, Object)

Vrátí index položky v seznamu se zadaným názvem vlastnosti a hodnotou.

GetEnumerator()

Načte enumerátor pro List.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetItemProperties(PropertyDescriptor[])

Načte pole PropertyDescriptor objektů představujících vázatelné vlastnosti typu seznamu zdrojů dat.

GetLifetimeService()
Zastaralé.

Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetListName(PropertyDescriptor[])

Získá název seznamu poskytujícího data pro vazbu.

GetRelatedCurrencyManager(String)

Získá související správce měny pro zadaného datového člena.

GetService(Type)

Vrátí objekt, který představuje službu poskytovanou objektem Component nebo jejím Containerobjektem .

(Zděděno od Component)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
IndexOf(Object)

Vyhledá zadaný objekt a vrátí index prvního výskytu v celém seznamu.

InitializeLifetimeService()
Zastaralé.

Získá objekt služby životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
Insert(Int32, Object)

Vloží položku do seznamu v zadaném indexu.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

(Zděděno od MarshalByRefObject)
MoveFirst()

Přesune se na první položku v seznamu.

MoveLast()

Přesune se na poslední položku v seznamu.

MoveNext()

Přesune se na další položku v seznamu.

MovePrevious()

Přesune se na předchozí položku v seznamu.

OnAddingNew(AddingNewEventArgs)

AddingNew Vyvolá událost.

OnBindingComplete(BindingCompleteEventArgs)

BindingComplete Vyvolá událost.

OnCurrentChanged(EventArgs)

CurrentChanged Vyvolá událost.

OnCurrentItemChanged(EventArgs)

CurrentItemChanged Vyvolá událost.

OnDataError(BindingManagerDataErrorEventArgs)

DataError Vyvolá událost.

OnDataMemberChanged(EventArgs)

DataMemberChanged Vyvolá událost.

OnDataSourceChanged(EventArgs)

DataSourceChanged Vyvolá událost.

OnListChanged(ListChangedEventArgs)

ListChanged Vyvolá událost.

OnPositionChanged(EventArgs)

PositionChanged Vyvolá událost.

Remove(Object)

Odebere zadanou položku ze seznamu.

RemoveAt(Int32)

Odebere položku v zadaném indexu v seznamu.

RemoveCurrent()

Odebere aktuální položku ze seznamu.

RemoveFilter()

Odebere filtr přidružený k objektu BindingSource.

RemoveSort()

Odebere řazení přidružené k objektu BindingSource.

ResetAllowNew()

Znovu inicializuje AllowNew vlastnost.

ResetBindings(Boolean)

Způsobí, že ovládací prvek vázaný na BindingSource ovládací prvek znovu načte všechny položky v seznamu a aktualizuje jejich zobrazené hodnoty.

ResetCurrentItem()

Způsobí, že ovládací prvek svázaný s objektem BindingSource znovu načte aktuálně vybranou položku a aktualizuje její zobrazenou hodnotu.

ResetItem(Int32)

Způsobí, že ovládací prvek svázaný s objektem BindingSource znovu načte položku v zadaném indexu a aktualizuje její zobrazenou hodnotu.

ResumeBinding()

Obnoví datová vazba.

SuspendBinding()

Pozastaví datová vazba, aby se zabránilo změnám v aktualizaci vázaného zdroje dat.

ToString()

String Vrátí hodnotu obsahující název Component, pokud existuje. Tato metoda by neměla být přepsána.

(Zděděno od Component)

Událost

AddingNew

Nastane před přidání položky do podkladového seznamu.

BindingComplete

Nastane, když jsou všichni klienti vázáni k tomuto BindingSource.

CurrentChanged

Nastane při změně aktuálně vázané položky.

CurrentItemChanged

Nastane při změně hodnoty Current vlastnosti vlastnosti.

DataError

Nastane, když je výjimka související s měnou bezobslužně zpracována nástrojem BindingSource.

DataMemberChanged

Nastane, když se DataMember hodnota vlastnosti změnila.

DataSourceChanged

Nastane, když se DataSource hodnota vlastnosti změnila.

Disposed

Nastane, když je komponenta odstraněna voláním Dispose() metody.

(Zděděno od Component)
ListChanged

Nastane, když se změní podkladový seznam nebo se změní položka v seznamu.

PositionChanged

Nastane po změně hodnoty Position vlastnosti.

Explicitní implementace rozhraní

IBindingList.AddIndex(PropertyDescriptor)

Přidá do PropertyDescriptor indexů používaných pro vyhledávání.

IBindingList.RemoveIndex(PropertyDescriptor)

Odebere z PropertyDescriptor indexů používaných k vyhledávání.

ICancelAddNew.CancelNew(Int32)

Zahodí novou čekající položku z kolekce.

ICancelAddNew.EndNew(Int32)

Potvrdí čekající novou položku do kolekce.

ISupportInitialize.BeginInit()

BindingSource Signalizuje, že se inicializace spouští.

ISupportInitialize.EndInit()

BindingSource Signalizuje dokončení inicializace.

ISupportInitializeNotification.Initialized

Vyvolá se při BindingSource inicializaci.

ISupportInitializeNotification.IsInitialized

Získá hodnotu označující, zda BindingSource je inicializován.

Metody rozšíření

Cast<TResult>(IEnumerable)

Přetypuje prvky objektu na IEnumerable zadaný typ.

OfType<TResult>(IEnumerable)

Filtruje prvky objektu IEnumerable na základě zadaného typu.

AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede objekt na IEnumerableIQueryable.

Platí pro

Viz také