BindingSource Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Инкапсулирует источник данных для формы.
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
- Наследование
- Атрибуты
- Реализации
Примеры
В следующем примере кода демонстрируется привязка ListBox к объекту BindingSource. привязан BindingSource к объекту BindingList<T> , который содержит список шрифтов.
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
Комментарии
Компонент BindingSource служит для многих целей. Во-первых, он упрощает привязку элементов управления формы к данным, предоставляя управление валютой, уведомления об изменениях и другие службы между Windows Forms элементами управления и источниками данных. Это достигается путем присоединения компонента к источнику BindingSourceDataSource данных с помощью свойства . Для сложных сценариев привязки можно при необходимости задать DataMember для свойства определенный столбец или список в источнике данных. Затем вы привязываете BindingSourceэлементы управления к . Все дальнейшее взаимодействие с данными осуществляется с помощью вызовов BindingSource компонента. Примеры того, как BindingSource может упростить процесс привязки, см. в разделах Практическое руководство. Привязка элементов управления Windows Forms к значениям базы данных DBNull и Практическое руководство. Обработка ошибок и исключений, возникающих при привязке данных. Навигация и обновление источника данных выполняются с помощью таких методов, как MoveNext, MoveLastи Remove. Такие операции, как сортировка и фильтрация, обрабатываются с помощью Sort свойств и Filter . Дополнительные сведения об использовании сортировки и фильтрации с помощью см. в BindingSourceразделе Практическое руководство. Сортировка и фильтрация данных ADO.NET с помощью компонента BindingSource Windows Forms.
Кроме того, BindingSource компонент может выступать в качестве строго типизированного источника данных. Как правило, тип базового источника данных фиксируется с помощью одного из следующих механизмов:
Используйте метод , Add чтобы добавить элемент в BindingSource компонент.
DataSource Задайте для свойства список, отдельный объект или тип.
Оба этих механизма создают строго типизированный список. Дополнительные сведения о том, как использовать для привязки BindingSource к типу, см. в разделе Практическое руководство. Привязка элемента управления Windows Forms к типу. Можно также использовать для привязки BindingSource элементов управления к объекту фабрики. Дополнительные сведения о том, как это сделать, см. в разделе Практическое руководство. Привязка элемента управления Windows Forms к объекту фабрики.
Примечание
Так как обрабатывает BindingSource как простые, так и сложные источники данных, терминология является проблематичной. В этой документации по классу термин list относится к коллекции данных в размещенном источнике данных, а элемент обозначает один элемент. При обсуждении функциональных возможностей, связанных со сложными источниками данных, используются эквивалентные термины table и row .
BindingSource предоставляет элементы для доступа к базовым данным. Текущий элемент можно получить с помощью Current свойства , а весь список — с помощью List свойства . Операции редактирования поддерживаются для текущего элемента с помощью Current методов и RemoveCurrent, EndEditCancelEdit и .AddNewAdd Хотя управление валютой обрабатывается автоматически для всех базовых типов источников данных, этот класс предоставляет ряд событий, таких как CurrentItemChanged и DataSourceChanged, которые позволяют настраивать.
К источникам данных, привязанным к компоненту BindingSource , также можно перемещаться и управлять ими с помощью BindingNavigator класса , который предоставляет пользовательский интерфейс, подобный VCR, для перемещения по элементам в списке. Хотя BindingNavigator его можно привязать к любому источнику данных, он был разработан для интеграции с компонентом BindingSource через его BindingNavigator.BindingSource свойство.
Свойство по умолчанию для BindingSource класса — DataSource. Событие по умолчанию — CurrentChanged.
Внимание!
Многие члены класса работают с базовым BindingSource списком, представленным свойством List , и просто ссылаются на базовый список. Поэтому, когда BindingSource привязан к пользовательской реализации IList, точное поведение этих элементов может отличаться от поведения, описанного в документации по классу. Например, RemoveAt метод вызывает IList.RemoveAt. В BindingSource документации описывается RemoveAt метод с пониманием RemoveAt того, что метод для базового IList объекта реализован правильно.
Конструкторы
BindingSource() |
Инициализирует новый экземпляр класса BindingSource, используя значения свойства по умолчанию. |
BindingSource(IContainer) |
Инициализирует новый экземпляр класса BindingSource и добавляет объект BindingSource в указанный контейнер. |
BindingSource(Object, String) |
Инициализирует новый экземпляр класса BindingSource, используя указанный источник данных и элемент данных. |
Свойства
AllowEdit |
Возвращает или задает значение, указывающее, разрешено ли редактирование элементов в базовом списке. |
AllowNew |
Получает или устанавливает значение, показывающее, можно ли добавлять элементы в список с помощью метода AddNew(). |
AllowRemove |
Возвращает значение, указывающее, разрешено ли удаление элементов из базового списка. |
CanRaiseEvents |
Возвращает значение, показывающее, может ли компонент вызывать событие. (Унаследовано от Component) |
Container |
Возвращает объект IContainer, который содержит коллекцию Component. (Унаследовано от Component) |
Count |
Получает общее число элементов в базовом списке, принимая текущее значение Filter в рассмотрение. |
CurrencyManager |
Получает диспетчер денежных единиц, сопоставленный с этим компонентом BindingSource. |
Current |
Возвращает текущий элемент в списке. |
DataMember |
Возвращает или задает список в источнике данных, к которому в настоящий момент привязан соединитель. |
DataSource |
Возвращает или задает источник данных, к которому привязан соединитель. |
DesignMode |
Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время. (Унаследовано от Component) |
Events |
Возвращает список обработчиков событий, которые прикреплены к этому объекту Component. (Унаследовано от Component) |
Filter |
Возвращает или задает выражение, используемое для фильтрации просматриваемых строк. |
IsBindingSuspended |
Возвращает значение, указывающее, приостановлена ли привязка списка. |
IsFixedSize |
Возвращает значение, указывающее, имеет ли базовый список фиксированный размер. |
IsReadOnly |
Возвращает значение, указывающее, является ли базовый список доступным только для чтения. |
IsSorted |
Возвращает или задает значение, указывающее, сортируются ли элементы в базовом списке. |
IsSynchronized |
Возвращает значение, указывающее, является ли доступ к коллекции синхронизированным (потокобезопасным). |
Item[Int32] |
Возвращает или задает элемент списка по указанному индексу. |
List |
Возвращает список, к которому привязан соединитель. |
Position |
Возвращает или задает индекс текущего элемента в базовом списке. |
RaiseListChangedEvents |
Возвращает или задает значение, показывающее, следует ли создавать события ListChanged. |
Site |
Получает или задает ISite объекта Component. (Унаследовано от Component) |
Sort |
Возвращает или задает имена столбцов, используемые для сортировки, и порядок сортировки для просмотра строк в источнике данных. |
SortDescriptions |
Возвращает коллекцию описаний сортировки, применяемой к источнику данных. |
SortDirection |
Возвращает направление сортировки элементов в списке. |
SortProperty |
Получает дескриптор PropertyDescriptor, используемый для сортировки списка. |
SupportsAdvancedSorting |
Возвращает значение, указывающее, поддерживает ли источник данных сортировку по нескольким столбцам. |
SupportsChangeNotification |
Возвращает значение, указывающее, поддерживает ли источник данных уведомления об изменениях. |
SupportsFiltering |
Возвращает значение, указывающее, поддерживает ли источник данных фильтрацию. |
SupportsSearching |
Получает значение, показывающее, поддерживает ли источник данных поиск с помощью метода Find(PropertyDescriptor, Object). |
SupportsSorting |
Возвращает значение, указывающее, поддерживает ли источник данных сортировку. |
SyncRoot |
Возвращает объект, который может быть использован для синхронизации доступа к базовому списку. |
Методы
Add(Object) |
Добавляет существующий элемент во внутренний список. |
AddNew() |
Добавляет новый элемент в базовый список. |
ApplySort(ListSortDescriptionCollection) |
Сортирует источник данных, используя заданные описания сортировки. |
ApplySort(PropertyDescriptor, ListSortDirection) |
Сортирует источник данных, используя заданный дескриптор свойства и направление сортировки. |
CancelEdit() |
Отменяет текущую операцию редактирования. |
Clear() |
Удаляет все элементы из списка. |
Contains(Object) |
Определяет, является ли объект элементом списка. |
CopyTo(Array, Int32) |
Копирует содержимое списка List в указанный массив, начиная с указанного индекса. |
CreateObjRef(Type) |
Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
Dispose() |
Освобождает все ресурсы, занятые модулем Component. (Унаследовано от Component) |
Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые объектом BindingSource, а при необходимости освобождает также управляемые ресурсы. |
EndEdit() |
Применяет ожидающие изменения к базовому источнику данных. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
Find(PropertyDescriptor, Object) |
Выполняет поиск индекса элемента с заданным дескриптором свойства. |
Find(String, Object) |
Возвращает индекс элемента в списке, имеющего заданное имя свойства и значение. |
GetEnumerator() |
Получает перечислитель для списка List. |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetItemProperties(PropertyDescriptor[]) |
Получает массив объектов PropertyDescriptor, представляющих свойства источника данных, имеющего тип списка, которые допускают привязку. |
GetLifetimeService() |
Устаревшие..
Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра. (Унаследовано от MarshalByRefObject) |
GetListName(PropertyDescriptor[]) |
Возвращает имя списка, предоставляющего данные для привязки. |
GetRelatedCurrencyManager(String) |
Возвращает связанный диспетчер денежных единиц для заданного элемента данных. |
GetService(Type) |
Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container. (Унаследовано от Component) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
IndexOf(Object) |
Осуществляет поиск указанного объекта и возвращает индекс первого вхождения в пределах списка. |
InitializeLifetimeService() |
Устаревшие..
Получает объект службы времени существования для управления политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
Insert(Int32, Object) |
Вставляет элемент в список по указанному индексу. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
MemberwiseClone(Boolean) |
Создает неполную копию текущего объекта MarshalByRefObject. (Унаследовано от MarshalByRefObject) |
MoveFirst() |
Переходит к первому элементу в списке. |
MoveLast() |
Переходит к последнему элементу в списке. |
MoveNext() |
Переходит к следующему элементу в списке. |
MovePrevious() |
Переходит к предыдущему элементу в списке. |
OnAddingNew(AddingNewEventArgs) |
Вызывает событие AddingNew. |
OnBindingComplete(BindingCompleteEventArgs) |
Вызывает событие BindingComplete. |
OnCurrentChanged(EventArgs) |
Вызывает событие CurrentChanged. |
OnCurrentItemChanged(EventArgs) |
Вызывает событие CurrentItemChanged. |
OnDataError(BindingManagerDataErrorEventArgs) |
Вызывает событие DataError. |
OnDataMemberChanged(EventArgs) |
Вызывает событие DataMemberChanged. |
OnDataSourceChanged(EventArgs) |
Вызывает событие DataSourceChanged. |
OnListChanged(ListChangedEventArgs) |
Вызывает событие ListChanged. |
OnPositionChanged(EventArgs) |
Вызывает событие PositionChanged. |
Remove(Object) |
Удаляет заданный элемент из списка. |
RemoveAt(Int32) |
Удаляет элемент по указанному индексу из списка. |
RemoveCurrent() |
Удаляет текущий элемент из списка. |
RemoveFilter() |
Удаляет фильтр, сопоставленный с компонентом BindingSource. |
RemoveSort() |
Удаляет сортировку, сопоставленную с компонентом BindingSource. |
ResetAllowNew() |
Повторно инициализирует свойство AllowNew. |
ResetBindings(Boolean) |
Вызывает в элементе управления, привязанном к компоненту BindingSource, повторное считывание всех элементов списка и обновление их отображаемых значений. |
ResetCurrentItem() |
Вызывает в элементе управления, привязанном к компоненту BindingSource, повторное считывание выбранного элемента списка и обновление его отображаемого значения. |
ResetItem(Int32) |
Вызывает в элементе управления, привязанном к компоненту BindingSource, повторное считывание элемента списка по указанному индексу и обновление его отображаемого значения. |
ResumeBinding() |
Возобновляет привязку данных. |
SuspendBinding() |
Приостанавливает действие привязки данных, чтобы предотвратить обновление привязанного источника данных в результате изменений. |
ToString() |
Возвращает объект String, содержащий имя Component, если оно есть. Этот метод не следует переопределять. (Унаследовано от Component) |
События
AddingNew |
Происходит перед добавлением элемента в базовый список. |
BindingComplete |
Вызывается, когда все клиенты привязаны к этому компоненту BindingSource. |
CurrentChanged |
Происходит при изменении элемента, к которому имеется привязка. |
CurrentItemChanged |
Происходит в результате изменения значения свойства Current. |
DataError |
Происходит, когда исключение, связанное с денежными единицами, обрабатывается компонентом BindingSource в автоматическом режиме. |
DataMemberChanged |
Происходит, если значение свойства DataMember было изменено. |
DataSourceChanged |
Происходит, если значение свойства DataSource было изменено. |
Disposed |
Возникает при удалении компонента путем вызова метода Dispose(). (Унаследовано от Component) |
ListChanged |
Происходит при изменении базового списка или элемента в списке. |
PositionChanged |
Происходит после изменения значения свойства Position. |
Явные реализации интерфейса
IBindingList.AddIndex(PropertyDescriptor) |
Добавляет дескриптор PropertyDescriptor к индексам, используемым для поиска. |
IBindingList.RemoveIndex(PropertyDescriptor) |
Удаляет дескриптор PropertyDescriptor из индексов, используемых для поиска. |
ICancelAddNew.CancelNew(Int32) |
Удаляет незафиксированный новый элемент из коллекции. |
ICancelAddNew.EndNew(Int32) |
Фиксирует незафиксированный новый элемент в коллекции. |
ISupportInitialize.BeginInit() |
Передает компоненту BindingSource сигнал о начале инициализации. |
ISupportInitialize.EndInit() |
Передает компоненту BindingSource сигнал о завершении инициализации. |
ISupportInitializeNotification.Initialized |
Происходит во время инициализации компонента BindingSource. |
ISupportInitializeNotification.IsInitialized |
Возвращает значение, указывающее, инициализирован ли объект BindingSource. |
Методы расширения
Cast<TResult>(IEnumerable) |
Приводит элементы объекта IEnumerable к заданному типу. |
OfType<TResult>(IEnumerable) |
Выполняет фильтрацию элементов объекта IEnumerable по заданному типу. |
AsParallel(IEnumerable) |
Позволяет осуществлять параллельный запрос. |
AsQueryable(IEnumerable) |
Преобразовывает коллекцию IEnumerable в объект IQueryable. |