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


BindingList<T>.FindCore(PropertyDescriptor, Object) Метод

Определение

Выполняет поиск индекса элемента, у которого заданный дескриптор свойств равен заданному значению, если поиск реализуется в производном классе; в противном случае — исключение NotSupportedException.

protected:
 virtual int FindCore(System::ComponentModel::PropertyDescriptor ^ prop, System::Object ^ key);
protected virtual int FindCore (System.ComponentModel.PropertyDescriptor prop, object key);
abstract member FindCore : System.ComponentModel.PropertyDescriptor * obj -> int
override this.FindCore : System.ComponentModel.PropertyDescriptor * obj -> int
Protected Overridable Function FindCore (prop As PropertyDescriptor, key As Object) As Integer

Параметры

prop
PropertyDescriptor

Объект PropertyDescriptor, который требуется найти.

key
Object

Значение параметр prop для поиска соответствия.

Возвращаемое значение

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

Исключения

Метод FindCore(PropertyDescriptor, Object) не переопределяется в производном классе.

Примеры

В следующем примере кода показано, как использовать FindCore элемент .

    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;
        }
    }
}
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

Комментарии

Класс BindingList<T> не предоставляет базовую реализацию поиска, поэтому FindCore по умолчанию всегда вызывает NotSupportedException исключение . Чтобы включить поиск, выполните наследование от BindingList<T> и выполните следующие задачи:

  • Переопределите SupportsSearchingCore , чтобы присвоить свойству SupportsSearchingCore значение true.

  • Переопределите FindCore , чтобы реализовать алгоритм поиска.

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