BindingSource Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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. |