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ý 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)
{
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. |