Sdílet prostřednictvím


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ý se BindingList<T> seznamem písem.

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace BindingSourceExamples;

public class Form1 : Form
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }

    public Form1() => Load += Form1_Load;

    TextBox textBox1;
    Button button1;
    ListBox listBox1;

    BindingSource binding1;
    void Form1_Load(object sender, EventArgs e)
    {
        listBox1 = new ListBox();
        textBox1 = new TextBox();
        binding1 = [];
        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 += button1_Click;
        ClientSize = new Size(292, 266);
        Controls.Add(button1);
        Controls.Add(textBox1);
        Controls.Add(listBox1);

        MyFontList fonts = [];
        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";
    }

    void button1_Click(object sender, EventArgs e)
    {
        if (!binding1.SupportsSearching)
        {
            _ = 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 => 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.Equals((string)key, StringComparison.CurrentCultureIgnoreCase))
            {
                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ží mnoha účelům. Za prvé zjednodušuje vazbové ovládací prvky ve formuláři na data tím, že poskytuje správu měn, oznámení o změnách a další služby mezi ovládacími prvky Windows Forms a zdroji dat. Toho dosáhnete připojením BindingSource komponenty ke zdroji dat pomocí DataSource vlastnosti. U složitých 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í s voláními BindingSource komponenty. Příklady, jak může proces vazby BindingSource zjednodušit, najdete v tématu Postupy: Vytvoření vazby ovládacích prvků Windows Forms k hodnotám databáze DBNull a postupy: Zpracování chyb a výjimek, ke kterým dochází s datovou vazbou. Navigace a aktualizace zdroje dat se provádí prostřednictvím metod, jako MoveNextje , MoveLasta Remove. Operace, jako je řazení a filtrování, se zpracovávají prostřednictvím Sort vlastností a Filter vlastností. Další informace o použití řazení a filtrování pomocí komponenty BindingSourceWindows Forms BindingSource naleznete v tématu Postupy: Řazení a filtrování ADO.NET dat pomocí komponenty Windows Forms BindingSource.

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

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

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

Oba tyto mechanismy vytvoří seznam silného typu. Další informace o použití vazby BindingSource k typu naleznete v tématu Postupy: Vytvoření vazby ovládacího prvku Windows Forms na typ. Ovládací prvky můžete také BindingSource svázat s objektem továrny. Další informace o tom, jak to provést, naleznete v tématu Postupy: Vytvoření vazby ovládacího prvku Windows Forms k objektu továrny.

Poznámka:

BindingSource Protože zpracovává jednoduché i složité zdroje dat, je terminologie problematická. V této dokumentaci ke třídě seznam termínů odkazuje na kolekci dat v rámci hostovaného zdroje dat a položka označuje jeden prvek. Při diskuzi o funkcích přidružených ke složitým zdrojům dat se použijí ekvivalentní termíny tabulky a řádku .

BindingSource poskytuje členům pro 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 jsou podporovány u aktuální položky prostřednictvím Current , RemoveCurrentCancelEditEndEdita , a Add a AddNew metody. Přestože se správa měn zpracovává automaticky pro všechny podkladové typy zdrojů dat, tato třída zveřejňuje řadu událostí, jako CurrentItemChanged je například a DataSourceChanged, které umožňují přizpůsobení.

Zdroje dat vázané na komponentu BindingSource lze také procházet a spravovat pomocí BindingNavigator třídy, která poskytuje uživatelské rozhraní podobné VCR pro navigaci položek v seznamu. I když BindingNavigator může být vázán na jakýkoli zdroj dat, byl navržen tak, aby se integroval s 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 odkazuje na jejich operaci na podkladový seznam. Proto, pokud BindingSource je vázán 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. Například RemoveAt metoda volá IList.RemoveAt. BindingSource Dokumentace popisuje metodu RemoveAt s pochopením, že RemoveAt metoda pro podklad IList je správně implementována.

Konstruktory

Name Description
BindingSource()

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

BindingSource(IContainer)

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

BindingSource(Object, String)

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

Vlastnosti

Name Description
AllowEdit

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

AllowNew

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

AllowRemove

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

CanRaiseEvents

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

(Zděděno od Component)
Container

Získá ten 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, ke kterému konektor vytvoří vazbu.

DesignMode

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

(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í zobrazených řádků.

IsBindingSuspended

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

IsFixedSize

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

IsReadOnly

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

IsSorted

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

IsSynchronized

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

Item[Int32]

Získá nebo nastaví prvek seznamu v zadaném indexu.

List

Získá seznam, ke kterému je spojnice vázána.

Position

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

RaiseListChangedEvents

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

Site

Získá nebo nastaví ISite .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 ve zdroji dat.

SortDirection

Získá směr položky v seznamu jsou seřazeny.

SortProperty

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

SupportsAdvancedSorting

Získá hodnotu určující, zda zdroj dat podporuje řazení s více sloupci.

SupportsChangeNotification

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

SupportsFiltering

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

SupportsSearching

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

SupportsSorting

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

SyncRoot

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

Metody

Name Description
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 se zadanými popisy řazení.

ApplySort(PropertyDescriptor, ListSortDirection)

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

CancelEdit()

Zruší aktuální operaci úprav.

Clear()

Odebere všechny prvky ze seznamu.

Contains(Object)

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

CopyTo(Array, Int32)

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

CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužící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 a volitelně uvolní spravované prostředky.

EndEdit()

Použije čekající změny na podkladový zdroj dat.

Equals(Object)

Určuje, zda je zadaný objekt roven 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 a hodnotou vlastnosti.

GetEnumerator()

Načte enumerátor pro List.

GetHashCode()

Slouží jako výchozí funkce hash.

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

Načte pole PropertyDescriptor objektů představujících vázané vlastnosti typu seznamu zdroje 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í data pro vazbu.

GetRelatedCurrencyManager(String)

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

GetService(Type)

Vrátí objekt, který představuje službu poskytovanou objektem Component nebo jeho Container.

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

Získá Type aktuální instance.

(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 pro řízení zásad ž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 Object.

(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 sadě BindingSource.

RemoveSort()

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

ResetAllowNew()

Znovu inicializuje AllowNew vlastnost.

ResetBindings(Boolean)

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

ResetCurrentItem()

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

ResetItem(Int32)

Způsobí, že ovládací prvek vázaný na BindingSource znovu načte položku v zadaném indexu a aktualizuje 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

Name Description
AddingNew

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

BindingComplete

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

CurrentChanged

Nastane, když se aktuálně vázaná položka změní.

CurrentItemChanged

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

DataError

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

DataMemberChanged

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

DataSourceChanged

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

Disposed

Nastane, když komponenta je uvolně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í

Name Description
IBindingList.AddIndex(PropertyDescriptor)

PropertyDescriptor Přidá indexy použité k vyhledávání.

IBindingList.RemoveIndex(PropertyDescriptor)

Odebere PropertyDescriptor z indexů použitých k hledání.

ICancelAddNew.CancelNew(Int32)

Zahodí nevyřízenou novou položku z kolekce.

ICancelAddNew.EndNew(Int32)

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

ISupportInitialize.BeginInit()

BindingSource Signalizuje, že inicializace začíná.

ISupportInitialize.EndInit()

BindingSource Signalizuje, že inicializace je dokončená.

ISupportInitializeNotification.Initialized

Nastane při BindingSource inicializaci.

ISupportInitializeNotification.IsInitialized

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

Metody rozšíření

Name Description
AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede IEnumerable na IQueryable.

Cast<TResult>(IEnumerable)

Přetypuje prvky IEnumerable na zadaný typ.

OfType<TResult>(IEnumerable)

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

Platí pro

Viz také