Поделиться через


BindingManagerBase Класс

Определение

Управляет всеми Binding объектами, привязанными к одному источнику данных и члену данных. Этот класс является абстрактным.

public ref class BindingManagerBase abstract
public abstract class BindingManagerBase
type BindingManagerBase = class
Public MustInherit Class BindingManagerBase
Наследование
BindingManagerBase
Производный

Примеры

В следующем примере кода используется BindingContext для возврата BindingManagerBase определенного источника данных. (В примере предполагается, что вы объявили myBindingManagerBase в разделе "Объявления" модуля.) Затем этот пример добавляет делегаты событий в CurrentChanged события и PositionChanged события. Наконец, в примере содержатся четыре метода (MoveNext, , MovePreviousMoveFirstиMoveLast) для увеличения или уменьшения Position свойства, а также задано Position значение первой или последней строки в списке. Последняя строка в списке определяется с помощью Count свойства.

void GetBindingManagerBase()
{
   
   /* CustomersToOrders is the RelationName of a DataRelation. 
      Therefore, the list maintained by the BindingManagerBase is the
      list of orders that belong to a specific customer in the 
      DataTable named Customers, found in DataSet1. */
   myBindingManagerBase = this->BindingContext[DataSet1, "Customers.CustomersToOrders"];
   
   // Adds delegates to the CurrentChanged and PositionChanged events.
   myBindingManagerBase->PositionChanged += gcnew EventHandler( this, &Form1::BindingManagerBase_PositionChanged );
   myBindingManagerBase->CurrentChanged += gcnew EventHandler( this, &Form1::BindingManagerBase_CurrentChanged );
}

void BindingManagerBase_PositionChanged( Object^ sender, EventArgs^ /*e*/ )
{
   
   // Prints the new Position of the BindingManagerBase.
   Console::Write( "Position Changed: " );
   Console::WriteLine( (dynamic_cast<BindingManagerBase^>(sender))->Position );
}

void BindingManagerBase_CurrentChanged( Object^ sender, EventArgs^ /*e*/ )
{
   
   // Prints the new value of the current object.
   Console::Write( "Current Changed: " );
   Console::WriteLine( (dynamic_cast<BindingManagerBase^>(sender))->Current );
}

void MoveNext()
{
   
   // Increments the Position property value by one.
   myBindingManagerBase->Position = myBindingManagerBase->Position + 1;
}

void MovePrevious()
{
   
   // Decrements the Position property value by one.
   myBindingManagerBase->Position = myBindingManagerBase->Position - 1;
}

void MoveFirst()
{
   
   // Goes to the first row in the list.
   myBindingManagerBase->Position = 0;
}

void MoveLast()
{
   
   // Goes to the last row in the list.
   myBindingManagerBase->Position = myBindingManagerBase->Count - 1;
}
private void GetBindingManagerBase()
{
   /* CustomersToOrders is the RelationName of a DataRelation. 
   Therefore, the list maintained by the BindingManagerBase is the
   list of orders that belong to a specific customer in the 
   DataTable named Customers, found in DataSet1. */
   myBindingManagerBase = 
   this.BindingContext[DataSet1, "Customers.CustomersToOrders"];

   // Adds delegates to the CurrentChanged and PositionChanged events.
   myBindingManagerBase.PositionChanged += 
   new EventHandler(BindingManagerBase_PositionChanged);
   myBindingManagerBase.CurrentChanged +=
   new EventHandler(BindingManagerBase_CurrentChanged);
}

private void BindingManagerBase_PositionChanged
(object sender, EventArgs e)
{
   // Prints the new Position of the BindingManagerBase.
   Console.Write("Position Changed: ");
   Console.WriteLine(((BindingManagerBase)sender).Position);
}

private void BindingManagerBase_CurrentChanged
(object sender, EventArgs e)
{
   // Prints the new value of the current object.
   Console.Write("Current Changed: ");
   Console.WriteLine(((BindingManagerBase)sender).Current);
}

private void MoveNext()
{
   // Increments the Position property value by one.
   myBindingManagerBase.Position += 1;
}

private void MovePrevious()
{
   // Decrements the Position property value by one.
   myBindingManagerBase.Position -= 1;
}

private void MoveFirst()
{
   // Goes to the first row in the list.
   myBindingManagerBase.Position = 0;
}

private void MoveLast()
{
   // Goes to the last row in the list.
   myBindingManagerBase.Position = 
   myBindingManagerBase.Count - 1;
}
Private Sub GetBindingManagerBase
   ' CustomersToOrders is the RelationName of a DataRelation.
   ' Therefore, the list maintained by the BindingManagerBase is the
   ' list of orders that belong to a specific customer in the
   ' DataTable named Customers, found in DataSet.
   myBindingManagerBase = Me.BindingContext(DataSet1, _
   "Customers.CustomersToOrders")

   ' Adds delegates to the CurrentChanged and PositionChanged events.
   AddHandler myBindingManagerBase.PositionChanged, _
   AddressOf BindingManagerBase_PositionChanged
   AddHandler myBindingManagerBase.CurrentChanged, _
   AddressOf BindingManagerBase_CurrentChanged
End Sub

Private Sub BindingManagerBase_PositionChanged _
(sender As Object, e As EventArgs)

   ' Prints the new Position of the BindingManagerBase.
   Console.Write("Position Changed: ")
   Console.WriteLine(CType(sender, BindingManagerBase).Position)
End Sub

Private Sub BindingManagerBase_CurrentChanged _
(sender As Object, e As EventArgs)

   ' Prints the new value of the current object.
   Console.Write("Current Changed: ")
   Console.WriteLine(CType(sender, BindingManagerBase).Current)
End Sub

Private Sub MoveNext
   ' Increments the Position property value by one.
   myBindingManagerBase.Position += 1
End Sub

Private Sub MovePrevious
   ' Decrements the Position property value by one.
   myBindingManagerBase.Position -= 1
End Sub

Private Sub MoveFirst
   ' Goes to the first row in the list.
   myBindingManagerBase.Position = 0
End Sub

Private Sub MoveLast
   ' Goes to the last row in the list.
   myBindingManagerBase.Position = _
   myBindingManagerBase.Count - 1
End Sub

Комментарии

Обеспечивает BindingManagerBase синхронизацию элементов управления с привязкой к данным в Windows Form, привязанных к одному источнику данных. (Дополнительные сведения о простой привязке элемента управления к источнику данных см. в Binding классе.) Например, предположим, что форма содержит два TextBox элемента управления, привязанные к одному источнику данных, но к разным столбцам. Источник данных может содержать DataTable имена клиентов, а столбцы могут содержать имена первых и фамилий. Эти два элемента управления должны быть синхронизированы, чтобы отобразить правильные имена и фамилии для одного и того же клиента. Объект CurrencyManager, наследуемый от BindingManagerBase класса, выполняет эту синхронизацию, сохраняя указатель на текущий элемент в источнике данных. Элементы TextBox управления привязаны к текущему элементу, чтобы они отображали сведения для одной строки. При изменении текущего элемента уведомляет все связанные элементы управления, CurrencyManager чтобы они могли обновлять свои данные. Кроме того, можно задать Position свойство, чтобы указать строку в DataTable точке управления. Чтобы определить, сколько строк существует в источнике данных, используйте Count свойство.

Это CurrencyManager необходимо, так как источники данных не обязательно поддерживают указатель текущего элемента. Например, массивы и ArrayList объекты могут быть источниками данных, но у них нет свойства, возвращающего текущий элемент. Чтобы получить текущий элемент, используйте Current свойство.

Он PropertyManager также наследует от BindingManagerBaseобъекта и используется для поддержания текущего свойства объекта, а не свойства текущего объекта в источнике данных. По этой причине попытка задать Position или Count свойство для PropertyManager не влияет.

Чтобы создать BindingManagerBaseкласс, используйте BindingContext класс, который возвращает CurrencyManager значение или значение PropertyManagerв зависимости от управляемого источника данных.

Программисты решений рекомендуется привязать элементы управления непосредственно к BindingSource компоненту, который выступает как в качестве источника данных, так и соединителя данных с фактическим целевым источником данных. BindingSource значительно упрощает простую и сложную привязку данных, включая управление валютой между элементом управления и его целевым объектом.

Примечания для тех, кто реализует этот метод

При наследовании BindingManagerBaseнеобходимо переопределить следующие абстрактные члены: AddNew(), CurrentEndCurrentEdit()GetItemProperties()OnCurrentChanged(EventArgs)CancelCurrentEdit()CountRemoveAt(Int32)ResumeBinding()PositionSuspendBinding()и .UpdateIsBinding()

Конструкторы

Имя Описание
BindingManagerBase()

Инициализирует новый экземпляр класса BindingManagerBase.

Поля

Имя Описание
onCurrentChangedHandler

Задает обработчик событий для CurrentChanged события.

onPositionChangedHandler

Задает обработчик событий для PositionChanged события.

Свойства

Имя Описание
Bindings

Возвращает коллекцию управляемых привязок.

Count

При переопределении в производном классе получает количество строк, управляемых параметром BindingManagerBase.

Current

При переопределении в производном классе получает текущий объект.

IsBindingSuspended

Возвращает значение, указывающее, приостановлена ли привязка.

Position

При переопределении в производном классе получает или задает позицию в базовом списке, который управляет привязкой к этой точке источника данных.

Методы

Имя Описание
AddNew()

При переопределении в производном классе добавляет новый элемент в базовый список.

CancelCurrentEdit()

При переопределении в производном классе отменяет текущее изменение.

EndCurrentEdit()

При переопределении в производном классе завершает текущее изменение.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetItemProperties()

При переопределении в производном классе получает коллекцию дескрипторов свойств для привязки.

GetItemProperties(ArrayList, ArrayList)

Возвращает коллекцию дескрипторов свойств для привязки с помощью указанного ArrayList.

GetItemProperties(Type, Int32, ArrayList, ArrayList)

Возвращает список свойств элементов, управляемых этим BindingManagerBase.

GetListName(ArrayList)

При переопределении в производном классе получает имя списка, предоставляющего данные для привязки.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
OnBindingComplete(BindingCompleteEventArgs)

Вызывает событие BindingComplete.

OnCurrentChanged(EventArgs)

Вызывает событие CurrentChanged.

OnCurrentItemChanged(EventArgs)

Вызывает событие CurrentItemChanged.

OnDataError(Exception)

Вызывает событие DataError.

PullData()

Извлекает данные из элемента управления, привязанного к данным, в источник данных, возвращая никаких сведений.

PushData()

Отправляет данные из источника данных в элемент управления с привязкой к данным, возвращая никаких сведений.

RemoveAt(Int32)

При переопределении в производном классе удаляет строку по указанному индексу из базового списка.

ResumeBinding()

При переопределении в производном классе возобновляет привязку данных.

SuspendBinding()

При переопределении в производном классе приостанавливает привязку данных.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
UpdateIsBinding()

При переопределении в производном классе обновляет привязку.

События

Имя Описание
BindingComplete

Происходит при завершении операции привязки данных.

CurrentChanged

Происходит при изменении текущего привязанного элемента.

CurrentItemChanged

Происходит при изменении состояния привязанного в данный момент элемента.

DataError

Происходит, когда Exception автоматически обрабатывается параметром BindingManagerBase.

PositionChanged

Происходит после изменения значения Position свойства.

Применяется к

См. также раздел