BindingSource Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Kapslar in datakällan för ett formulär.
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
- Arv
- Attribut
- Implementeringar
Exempel
I följande kodexempel visas en ListBox bindning till en BindingSource. BindingSource är bunden till en BindingList<T> som innehåller en lista med teckensnitt.
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
Kommentarer
Komponenten BindingSource har många syften. För det första förenklar det bindande kontroller i ett formulär till data genom att tillhandahålla valutahantering, ändringsmeddelanden och andra tjänster mellan Windows Forms kontroller och datakällor. Detta uppnås genom att komponenten BindingSource kopplas till datakällan med hjälp av DataSource egenskapen . För komplexa bindningsscenarier kan du ange DataMember egenskapen till en specifik kolumn eller lista i datakällan. Sedan binder du kontrollerna till BindingSource. All ytterligare interaktion med data utförs med anrop till komponenten BindingSource . Exempel på hur BindingSource kan förenkla bindningsprocessen finns i How to: Bind Windows Forms Controls to DBNull Database Values and How to: Handle Errors and Exceptions that Occur with Databinding. Navigering och uppdatering av datakällan utförs med metoder som MoveNext, MoveLastoch Remove. Åtgärder som sortering och filtrering hanteras via Sort egenskaperna och Filter . Mer information om hur du använder sortering och filtrering med BindingSource finns i How to: Sort and Filter ADO.NET Data with the Windows Forms BindingSource Component.
Dessutom kan komponenten BindingSource fungera som en starkt typad datakälla. Vanligtvis åtgärdas typen av den underliggande datakällan via någon av följande mekanismer:
Add Använd metoden för att lägga till ett objekt i komponentenBindingSource.
Ange egenskapen DataSource till en lista, ett enskilt objekt eller en typ.
Båda dessa mekanismer skapar en starkt skriven lista. Mer information om hur du använder BindingSource för att binda till en typ finns i How to: Bind a Windows Forms Control to a Type. Du kan också använda för BindingSource att binda kontrollerna till ett fabriksobjekt. Mer information om hur du gör detta finns i How to: Bind a Windows Forms Control to a Factory Object.
Note
Eftersom en BindingSource hanterar både enkla och komplexa datakällor är terminologin problematisk. I den här klassdokumentationen refererar termlistan till en datainsamling i den värdbaserade datakällan, och objektet anger ett enda element. När du diskuterar funktioner som är associerade med komplexa datakällor används motsvarande termtabell och rad .
BindingSource ger medlemmar åtkomst till underliggande data. Det aktuella objektet kan hämtas via Current egenskapen och hela listan kan hämtas via egenskapen List . Redigeringsåtgärder stöds för det aktuella objektet via Current och metoderna , RemoveCurrentEndEditoch och CancelEditAdd .AddNew Även om valutahantering hanteras automatiskt för alla underliggande typer av datakällor, exponerar den här klassen ett antal händelser, till exempel och CurrentItemChanged, som DataSourceChanged möjliggör anpassning.
Datakällor som är bundna till en BindingSource komponent kan också navigeras och hanteras med BindingNavigator klassen, vilket ger ett VCR-liknande användargränssnitt (UI) för navigering av objekt i en lista. Även om BindingNavigator den kan bindas till vilken datakälla som helst har den utformats för att integreras med en BindingSource komponent via dess BindingNavigator.BindingSource egenskap.
Standardegenskapen BindingSource för klassen är DataSource. Standardhändelsen är CurrentChanged.
Caution
Många av medlemmarna i BindingSource klassen arbetar på den underliggande listan som representeras av List egenskapen och refererar helt enkelt till den underliggande listan. BindingSource När är bunden till en anpassad implementering av IListkan därför medlemmarnas exakta beteende skilja sig från det beteende som beskrivs i klassdokumentationen. Metoden anropar RemoveAttill exempel IList.RemoveAt . Dokumentationen BindingSourceRemoveAt beskriver metoden med förståelsen RemoveAt att metoden för den underliggande IList metoden är korrekt implementerad.
Konstruktorer
| Name | Description |
|---|---|
| BindingSource() |
Initierar en ny instans av BindingSource klassen till standardegenskapsvärdena. |
| BindingSource(IContainer) |
Initierar en ny instans av BindingSource klassen och lägger till i BindingSource den angivna containern. |
| BindingSource(Object, String) |
Initierar en ny instans av BindingSource klassen med den angivna datakällan och datamedlemmen. |
Egenskaper
| Name | Description |
|---|---|
| AllowEdit |
Hämtar ett värde som anger om objekt i den underliggande listan kan redigeras. |
| AllowNew |
Hämtar eller anger ett värde som anger om AddNew() metoden kan användas för att lägga till objekt i listan. |
| AllowRemove |
Hämtar ett värde som anger om objekt kan tas bort från den underliggande listan. |
| CanRaiseEvents |
Hämtar ett värde som anger om komponenten kan generera en händelse. (Ärvd från Component) |
| Container |
Hämtar som IContainer innehåller Component. (Ärvd från Component) |
| Count |
Hämtar det totala antalet objekt i den underliggande listan, med det aktuella Filter värdet i åtanke. |
| CurrencyManager |
Hämtar valutahanteraren som är associerad med den här BindingSource. |
| Current |
Hämtar det aktuella objektet i listan. |
| DataMember |
Hämtar eller anger den specifika listan i datakällan som anslutningsappen för närvarande binder till. |
| DataSource |
Hämtar eller anger den datakälla som anslutningsappen binder till. |
| DesignMode |
Hämtar ett värde som anger om det Component för närvarande är i designläge. (Ärvd från Component) |
| Events |
Hämtar listan över händelsehanterare som är kopplade till den här Component. (Ärvd från Component) |
| Filter |
Hämtar eller anger det uttryck som används för att filtrera vilka rader som visas. |
| IsBindingSuspended |
Hämtar ett värde som anger om listbindningen är pausad. |
| IsFixedSize |
Hämtar ett värde som anger om den underliggande listan har en fast storlek. |
| IsReadOnly |
Hämtar ett värde som anger om den underliggande listan är skrivskyddad. |
| IsSorted |
Hämtar ett värde som anger om objekten i den underliggande listan sorteras. |
| IsSynchronized |
Hämtar ett värde som anger om åtkomsten till samlingen synkroniseras (trådsäker). |
| Item[Int32] |
Hämtar eller anger listelementet vid det angivna indexet. |
| List |
Hämtar listan som anslutningsappen är bunden till. |
| Position |
Hämtar eller anger indexet för det aktuella objektet i den underliggande listan. |
| RaiseListChangedEvents |
Hämtar eller anger ett värde som anger om ListChanged händelser ska genereras. |
| Site |
Hämtar eller ställer in ISite i Component. (Ärvd från Component) |
| Sort |
Hämtar eller anger de kolumnnamn som används för sortering och sorteringsordningen för att visa raderna i datakällan. |
| SortDescriptions |
Hämtar samlingen med sorteringsbeskrivningar som tillämpas på datakällan. |
| SortDirection |
Hämtar riktningen som objekten i listan sorteras i. |
| SortProperty |
Hämtar det PropertyDescriptor som används för att sortera listan. |
| SupportsAdvancedSorting |
Hämtar ett värde som anger om datakällan stöder sortering med flera kolumner. |
| SupportsChangeNotification |
Hämtar ett värde som anger om datakällan stöder ändringsmeddelanden. |
| SupportsFiltering |
Hämtar ett värde som anger om datakällan stöder filtrering. |
| SupportsSearching |
Hämtar ett värde som anger om datakällan stöder sökning med Find(PropertyDescriptor, Object) metoden. |
| SupportsSorting |
Hämtar ett värde som anger om datakällan stöder sortering. |
| SyncRoot |
Hämtar ett objekt som kan användas för att synkronisera åtkomst till den underliggande listan. |
Metoder
| Name | Description |
|---|---|
| Add(Object) |
Lägger till ett befintligt objekt i den interna listan. |
| AddNew() |
Lägger till ett nytt objekt i den underliggande listan. |
| ApplySort(ListSortDescriptionCollection) |
Sorterar datakällan med de angivna sorteringsbeskrivningarna. |
| ApplySort(PropertyDescriptor, ListSortDirection) |
Sorterar datakällan med den angivna egenskapsbeskrivningen och sorteringsriktningen. |
| CancelEdit() |
Avbryter den aktuella redigeringsåtgärden. |
| Clear() |
Tar bort alla element från listan. |
| Contains(Object) |
Avgör om ett objekt är ett objekt i listan. |
| CopyTo(Array, Int32) |
Kopierar innehållet i List till den angivna matrisen med början vid det angivna indexvärdet. |
| CreateObjRef(Type) |
Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt. (Ärvd från MarshalByRefObject) |
| Dispose() |
Släpper alla resurser som används av Component. (Ärvd från Component) |
| Dispose(Boolean) |
Släpper de ohanterade resurser som används av BindingSource och släpper eventuellt de hanterade resurserna. |
| EndEdit() |
Tillämpar väntande ändringar på den underliggande datakällan. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| Find(PropertyDescriptor, Object) |
Söker efter indexet för det objekt som har den angivna egenskapsbeskrivningen. |
| Find(String, Object) |
Returnerar indexet för objektet i listan med det angivna egenskapsnamnet och värdet. |
| GetEnumerator() |
Hämtar en uppräknare för List. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetItemProperties(PropertyDescriptor[]) |
Hämtar en matris med PropertyDescriptor objekt som representerar de bindbara egenskaperna för datakällans listtyp. |
| GetLifetimeService() |
Föråldrad.
Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| GetListName(PropertyDescriptor[]) |
Hämtar namnet på listan som anger data för bindningen. |
| GetRelatedCurrencyManager(String) |
Hämtar den relaterade valutahanteraren för den angivna datamedlemmen. |
| GetService(Type) |
Returnerar ett objekt som representerar en tjänst som tillhandahålls av Component eller av dess Container. (Ärvd från Component) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| IndexOf(Object) |
Söker efter det angivna objektet och returnerar indexet för den första förekomsten i hela listan. |
| InitializeLifetimeService() |
Föråldrad.
Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| Insert(Int32, Object) |
Infogar ett objekt i listan i det angivna indexet. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| MemberwiseClone(Boolean) |
Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet. (Ärvd från MarshalByRefObject) |
| MoveFirst() |
Flyttar till det första objektet i listan. |
| MoveLast() |
Flyttar till det sista objektet i listan. |
| MoveNext() |
Flyttar till nästa objekt i listan. |
| MovePrevious() |
Flyttar till föregående objekt i listan. |
| OnAddingNew(AddingNewEventArgs) |
Genererar händelsen AddingNew . |
| OnBindingComplete(BindingCompleteEventArgs) |
Genererar händelsen BindingComplete . |
| OnCurrentChanged(EventArgs) |
Genererar händelsen CurrentChanged . |
| OnCurrentItemChanged(EventArgs) |
Genererar händelsen CurrentItemChanged . |
| OnDataError(BindingManagerDataErrorEventArgs) |
Genererar händelsen DataError . |
| OnDataMemberChanged(EventArgs) |
Genererar händelsen DataMemberChanged . |
| OnDataSourceChanged(EventArgs) |
Genererar händelsen DataSourceChanged . |
| OnListChanged(ListChangedEventArgs) |
Genererar händelsen ListChanged . |
| OnPositionChanged(EventArgs) |
Genererar händelsen PositionChanged . |
| Remove(Object) |
Tar bort det angivna objektet från listan. |
| RemoveAt(Int32) |
Tar bort objektet i det angivna indexet i listan. |
| RemoveCurrent() |
Tar bort det aktuella objektet från listan. |
| RemoveFilter() |
Tar bort filtret som är associerat med BindingSource. |
| RemoveSort() |
Tar bort den sortering som är associerad med BindingSource. |
| ResetAllowNew() |
Initierar egenskapen igen AllowNew . |
| ResetBindings(Boolean) |
Orsakar en kontroll som är bunden till BindingSource för att läsa om alla objekt i listan och uppdatera deras visade värden. |
| ResetCurrentItem() |
Orsakar en kontroll som är bunden till BindingSource för att läsa om det markerade objektet och uppdatera dess visade värde. |
| ResetItem(Int32) |
Orsakar en kontroll som är bunden till BindingSource för att läsa om objektet vid det angivna indexet och uppdatera dess visade värde. |
| ResumeBinding() |
Återupptar databindning. |
| SuspendBinding() |
Pausar databindningen för att förhindra att ändringar uppdaterar den bundna datakällan. |
| ToString() |
Returnerar ett String som innehåller namnet på Component, om det finns. Den här metoden bör inte åsidosättas. (Ärvd från Component) |
Händelser
| Name | Description |
|---|---|
| AddingNew |
Inträffar innan ett objekt läggs till i den underliggande listan. |
| BindingComplete |
Inträffar när alla klienter har bundits till detta BindingSource. |
| CurrentChanged |
Inträffar när det för närvarande bundna objektet ändras. |
| CurrentItemChanged |
Inträffar när ett egenskapsvärde för Current egenskapen har ändrats. |
| DataError |
Inträffar när ett valutarelaterat undantag hanteras tyst av BindingSource. |
| DataMemberChanged |
Inträffar när DataMember-egenskapsvärdet har ändrats. |
| DataSourceChanged |
Inträffar när DataSource-egenskapsvärdet har ändrats. |
| Disposed |
Inträffar när komponenten tas bort av ett anrop till Dispose() metoden. (Ärvd från Component) |
| ListChanged |
Inträffar när den underliggande listan ändras eller ett objekt i listan ändras. |
| PositionChanged |
Inträffar när värdet för Position egenskapen har ändrats. |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IBindingList.AddIndex(PropertyDescriptor) |
Lägger till i PropertyDescriptor de index som används för sökning. |
| IBindingList.RemoveIndex(PropertyDescriptor) |
PropertyDescriptor Tar bort från de index som används för sökning. |
| ICancelAddNew.CancelNew(Int32) |
Tar bort ett väntande nytt objekt från samlingen. |
| ICancelAddNew.EndNew(Int32) |
Checkar in ett väntande nytt objekt i samlingen. |
| ISupportInitialize.BeginInit() |
BindingSource Signalerar att initieringen startar. |
| ISupportInitialize.EndInit() |
BindingSource Signalerar att initieringen är klar. |
| ISupportInitializeNotification.Initialized |
Inträffar när BindingSource initieras. |
| ISupportInitializeNotification.IsInitialized |
Hämtar ett värde som anger om BindingSource initieras. |
Tilläggsmetoder
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Möjliggör parallellisering av en fråga. |
| AsQueryable(IEnumerable) |
Konverterar en IEnumerable till en IQueryable. |
| Cast<TResult>(IEnumerable) |
Omvandlar elementen i en IEnumerable till den angivna typen. |
| OfType<TResult>(IEnumerable) |
Filtrerar elementen i en IEnumerable baserat på en angiven typ. |