BindingManagerBase Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Управляет всеми объектами Binding, которые привязаны к одному источнику данных и элементу данных. Это абстрактный класс.
public ref class BindingManagerBase abstract
public abstract class BindingManagerBase
type BindingManagerBase = class
Public MustInherit Class BindingManagerBase
- Наследование
-
BindingManagerBase
- Производный
Примеры
В следующем примере кода используется BindingContext для возврата для определенного BindingManagerBase источника данных. (В примере предполагается, что вы объявили myBindingManagerBase
в разделе Объявления модуля.) Затем в примере добавляются делегаты событий в CurrentChanged события и PositionChanged . Наконец, в примере содержатся четыре метода (, , и ), которые увеличивают или уменьшают Position значение свойства и присваивают Position первой или последней строке в списке.MoveLast
MoveFirst
MovePrevious
MoveNext
Последняя строка в списке определяется с помощью 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 Forms, привязанных к тому же источнику данных. (Дополнительные сведения о простой привязке элемента управления к источнику данных см. в Binding классе.) Например, предположим, что форма содержит два TextBox элемента управления, привязанных к одному источнику данных, но к разным столбцам. Источником данных может быть DataTable объект , содержащий имена клиентов, а столбцы — имена и фамилии. Два элемента управления должны быть синхронизированы, чтобы отобразить правильные имена и фамилии для одного и того же клиента. Объект CurrencyManager, который наследуется от BindingManagerBase класса , выполняет эту синхронизацию, сохраняя указатель на текущий элемент в источнике данных. Элементы TextBox управления привязаны к текущему элементу, чтобы они отображали сведения для одной строки. При изменении CurrencyManager текущего элемента объект уведомляет все связанные элементы управления, чтобы они могли обновить свои данные. Кроме того, можно задать Position свойство , чтобы указать строку в , DataTable на которую указывают элементы управления. Чтобы определить, сколько строк существует в источнике Count данных, используйте свойство .
Требуется CurrencyManager , так как источники данных не обязательно поддерживают указатель текущего элемента. Например, массивы и ArrayList объекты могут быть источниками данных, но они не имеют свойства, возвращающего текущий элемент. Чтобы получить текущий элемент, используйте Current свойство .
Также PropertyManager наследуется от BindingManagerBaseи используется для поддержания текущего свойства объекта, а не свойства текущего объекта в источнике данных. По этой причине попытка задать Position свойство или Count для не оказывает никакого PropertyManager влияния.
Чтобы создать , используйте BindingManagerBaseBindingContext класс , который возвращает или CurrencyManagerPropertyManager, в зависимости от управляемого источника данных.
Программистам решений рекомендуется привязывать элементы управления непосредственно к компоненту BindingSource , который выступает в качестве источника данных и соединителя данных с фактическим целевым источником данных. BindingSource значительно упрощает как простую, так и сложную привязку данных, включая управление валютой между элементом управления и его целевым объектом.
Примечания для тех, кто реализует этот метод
При наследовании от BindingManagerBaseнеобходимо переопределить следующие абстрактные члены: AddNew(), Count, CancelCurrentEdit(), Current, EndCurrentEdit()GetItemProperties(), OnCurrentChanged(EventArgs), Position, RemoveAt(Int32)ResumeBinding(), SuspendBinding()и 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. |