IBindingListとは? わかりやすく解説

IBindingList イベント


IBindingList インターフェイス

データ ソースへの連結時の複雑な処理と単純な処理を両方ともサポートするために必要な機能提供します

名前空間: System.ComponentModel
アセンブリ: System (system.dll 内)
構文構文

Public Interface IBindingList
    Inherits IList, ICollection, IEnumerable
public interface IBindingList : IList, ICollection, IEnumerable
public interface class IBindingList : IList,
 ICollection, IEnumerable
public interface IBindingList extends IList, ICollection, 
    IEnumerable
public interface IBindingList extends IList,
 ICollection, 
    IEnumerable
解説解説

このインターフェイスは DataView クラスによって実装されますメソッド実装は、DataView クラスでのそのメソッド実装と同じ動作示します

ApplySort メソッドまたは RemoveSort メソッド呼び出す場合は、Reset 列挙体を使用して ListChanged イベント発生させてください

AddNew メソッド呼び出す場合は、適切なインデックス付いた ItemAdded 列挙体を使用して ListChanged イベント発生させてください追加した新しい行は、DataGridView コントロールEsc キーを押すと削除できる状態にあります。この行で ItemAdded 列挙体を使用して 2 回目ListChanged イベント発生させると、その項目が "new" ではない状態の行になったことが示されます。

項目を削除するか、(IEditableObject を実装している) 新しい行で CancelEdit メソッド呼び出す場合は、適切なインデックス付いた ItemDeleted 列挙体を使用して ListChanged イベント発生させてください

使用例使用例

次の例では、IBindingList インターフェイス簡単な実装示しますCustomerList クラスは、リスト顧客情報格納します。この例は、IEditableObject クラスの例に含まれている Customer クラス使用したことがあることを前提としています。

Public Class CustomersList
    Inherits CollectionBase
    Implements IBindingList 

    Private resetEvent As New
 ListChangedEventArgs(ListChangedType.Reset, -1)
    Private onListChanged1 As ListChangedEventHandler


    Public Sub LoadCustomers()
        Dim l As IList = CType(Me,
 IList)
        l.Add(ReadCustomer1())
        l.Add(ReadCustomer2())
        OnListChanged(resetEvent)
    End Sub 


    Default Public Property
 Item(ByVal index As Integer)
 As Customer
        Get
            Return CType(List(index), Customer)
        End Get
        Set(ByVal Value As
 Customer)
            List(index) = Value
        End Set
    End Property


    Public Function Add(ByVal
 value As Customer) As Integer
        Return List.Add(value)
    End Function 


    Public Function AddNew2() As
 Customer
        Return CType(CType(Me, IBindingList).AddNew(),
 Customer)
    End Function 


    Public Sub Remove(ByVal
 value As Customer)
        List.Remove(value)
    End Sub 



    Protected Overridable Sub
 OnListChanged(ByVal ev As ListChangedEventArgs)
        If Not (onListChanged1 Is
 Nothing) Then
            onListChanged1(Me, ev)
        End If
    End Sub 



    Protected Overrides Sub
 OnClear()
        Dim c As Customer
        For Each c In List
            c.parent = Nothing
        Next c
    End Sub 


    Protected Overrides Sub
 OnClearComplete()
        OnListChanged(resetEvent)
    End Sub 


    Protected Overrides Sub
 OnInsertComplete(ByVal index As Integer,
 ByVal value As Object)
        Dim c As Customer = CType(value, Customer)
        c.parent = Me
        OnListChanged(New ListChangedEventArgs(ListChangedType.ItemAdded,
 index))
    End Sub 


    Protected Overrides Sub
 OnRemoveComplete(ByVal index As Integer,
 ByVal value As Object)
        Dim c As Customer = CType(value, Customer)
        c.parent = Me
        OnListChanged(New ListChangedEventArgs(ListChangedType.ItemDeleted,
 index))
    End Sub 


    Protected Overrides Sub
 OnSetComplete(ByVal index As Integer,
 ByVal oldValue As Object, ByVal newValue As Object)
        If oldValue <> newValue Then

            Dim oldcust As Customer = CType(oldValue,
 Customer)
            Dim newcust As Customer = CType(newValue,
 Customer)

            oldcust.parent = Nothing
            newcust.parent = Me

            OnListChanged(New ListChangedEventArgs(ListChangedType.ItemAdded,
 index))
        End If
    End Sub 


    ' Called by Customer when it changes.
    Friend Sub CustomerChanged(ByVal
 cust As Customer)
        Dim index As Integer
 = List.IndexOf(cust)
        OnListChanged(New ListChangedEventArgs(ListChangedType.ItemChanged,
 index))
    End Sub 


    ' Implements IBindingList.

    ReadOnly Property AllowEdit() As
 Boolean Implements IBindingList.AllowEdit
        Get
            Return True
        End Get
    End Property

    ReadOnly Property AllowNew() As
 Boolean Implements IBindingList.AllowNew
        Get
            Return True
        End Get
    End Property

    ReadOnly Property AllowRemove() As
 Boolean Implements IBindingList.AllowRemove
        Get
            Return True
        End Get
    End Property

    ReadOnly Property SupportsChangeNotification()
 As Boolean Implements
 IBindingList.SupportsChangeNotification
        Get
            Return True
        End Get
    End Property

    ReadOnly Property SupportsSearching() As
 Boolean Implements IBindingList.SupportsSearching
        Get
            Return False
        End Get
    End Property

    ReadOnly Property SupportsSorting() As
 Boolean Implements IBindingList.SupportsSorting
        Get
            Return False
        End Get
    End Property

    ' Events.
    Public Event ListChanged As
 ListChangedEventHandler Implements IBindingList.ListChanged


    ' Methods.
    Function AddNew() As Object
 Implements IBindingList.AddNew
        Dim c As New Customer(Me.Count.ToString())
        List.Add(c)
        Return c
    End Function 


    ' Unsupported properties.

    ReadOnly Property IsSorted() As
 Boolean Implements IBindingList.IsSorted
        Get
            Throw New NotSupportedException()
        End Get
    End Property

    ReadOnly Property SortDirection() As
 ListSortDirection Implements IBindingList.SortDirection
        Get
            Throw New NotSupportedException()
        End Get
    End Property


    ReadOnly Property SortProperty() As
 PropertyDescriptor Implements IBindingList.SortProperty
        Get
            Throw New NotSupportedException()
        End Get
    End Property


    ' Unsupported Methods.
    Sub AddIndex(ByVal prop As
 PropertyDescriptor) Implements IBindingList.AddIndex
        Throw New NotSupportedException()
    End Sub 


    Sub ApplySort(ByVal prop As
 PropertyDescriptor, ByVal direction As ListSortDirection)
 Implements IBindingList.ApplySort
        Throw New NotSupportedException()
    End Sub 


    Function Find(ByVal prop As
 PropertyDescriptor, ByVal key As Object)
 As Integer Implements IBindingList.Find
        Throw New NotSupportedException()
    End Function 


    Sub RemoveIndex(ByVal prop As
 PropertyDescriptor) Implements IBindingList.RemoveIndex
        Throw New NotSupportedException()
    End Sub 


    Sub RemoveSort() Implements IBindingList.RemoveSort
        Throw New NotSupportedException()
    End Sub 


    ' Worker functions to populate the list with data.
    Private Shared Function
 ReadCustomer1() As Customer
        Dim cust As New
 Customer("536-45-1245")
        cust.FirstName = "Jo"
        cust.LastName = "Brown"
        Return cust
    End Function 


    Private Shared Function
 ReadCustomer2() As Customer
        Dim cust As New
 Customer("246-12-5645")
        cust.FirstName = "Robert"
        cust.LastName = "Brown"
        Return cust
    End Function 
End Class

public class CustomersList :  CollectionBase,
 IBindingList
{

    private ListChangedEventArgs resetEvent = new
 ListChangedEventArgs(ListChangedType.Reset, -1);
    private ListChangedEventHandler onListChanged;

    public void LoadCustomers() 
    {
        IList l = (IList)this;
        l.Add(ReadCustomer1());
        l.Add(ReadCustomer2());
        OnListChanged(resetEvent);
    }

    public Customer this[int
 index] 
    {
        get 
        {
            return (Customer)(List[index]);
        }
        set 
        {
            List[index] = value;
        }
    }

    public int Add (Customer value) 
    {
        return List.Add(value);
    }

    public Customer AddNew() 
    {
        return (Customer)((IBindingList)this).AddNew();
    }

    public void Remove (Customer value) 
    {
        List.Remove(value);
    }

    
    protected virtual void OnListChanged(ListChangedEventArgs
 ev) 
    {
        if (onListChanged != null) 
        {
            onListChanged(this, ev);
        }
    }
    

    protected override void OnClear() 
    {
        foreach (Customer c in List) 
        {
            c.Parent = null;
        }
    }

    protected override void OnClearComplete()
 
    {
        OnListChanged(resetEvent);
    }

    protected override void OnInsertComplete(int
 index, object value) 
    {
        Customer c = (Customer)value;
        c.Parent = this;
        OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded,
 index));
    }

    protected override void OnRemoveComplete(int
 index, object value) 
    {
        Customer c = (Customer)value;
        c.Parent = this;
        OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted,
 index));
    }

    protected override void OnSetComplete(int
 index, object oldValue, object newValue) 
    {
        if (oldValue != newValue) 
        {

            Customer oldcust = (Customer)oldValue;
            Customer newcust = (Customer)newValue;
            
            oldcust.Parent = null;
            newcust.Parent = this;
            
            
            OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded,
 index));
        }
    }
    
    // Called by Customer when it changes.
    internal void CustomerChanged(Customer cust) 
    {
        
        int index = List.IndexOf(cust);
        
        OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged,
 index));
    }
    

    // Implements IBindingList.
    bool IBindingList.AllowEdit 
    { 
        get { return true
 ; }
    }

    bool IBindingList.AllowNew 
    { 
        get { return true
 ; }
    }

    bool IBindingList.AllowRemove 
    { 
        get { return true
 ; }
    }

    bool IBindingList.SupportsChangeNotification 
    { 
        get { return true
 ; }
    }
    
    bool IBindingList.SupportsSearching 
    { 
        get { return false
 ; }
    }

    bool IBindingList.SupportsSorting 
    { 
        get { return false
 ; }
    }


    // Events.
    public event ListChangedEventHandler ListChanged 
    {
        add 
        {
            onListChanged += value;
        }
        remove 
        {
            onListChanged -= value;
        }
    }

    // Methods.
    object IBindingList.AddNew() 
    {
        Customer c = new Customer(this.Count.ToString());
        List.Add(c);
        return c;
    }


    // Unsupported properties.
    bool IBindingList.IsSorted 
    { 
        get { throw new NotSupportedException();
 }
    }

    ListSortDirection IBindingList.SortDirection 
    { 
        get { throw new NotSupportedException();
 }
    }


    PropertyDescriptor IBindingList.SortProperty 
    { 
        get { throw new NotSupportedException();
 }
    }


    // Unsupported Methods.
    void IBindingList.AddIndex(PropertyDescriptor property) 
    {
        throw new NotSupportedException(); 
    }

    void IBindingList.ApplySort(PropertyDescriptor property, ListSortDirection
 direction) 
    {
        throw new NotSupportedException(); 
    }

    int IBindingList.Find(PropertyDescriptor property, object
 key) 
    {
        throw new NotSupportedException(); 
    }

    void IBindingList.RemoveIndex(PropertyDescriptor property)
 
    {
        throw new NotSupportedException(); 
    }

    void IBindingList.RemoveSort() 
    {
        throw new NotSupportedException(); 
    }

    // Worker functions to populate the list with data.
    private static Customer ReadCustomer1()
 
    {
        Customer cust = new Customer("536-45-1245");
        cust.FirstName = "Jo";
        cust.LastName = "Brown";
        return cust;
    }
    
    private static Customer ReadCustomer2()
 
    {
        Customer cust = new Customer("246-12-5645");
        cust.FirstName = "Robert";
        cust.LastName = "Brown";
        return cust;
    }
}

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

IBindingList プロパティ


IBindingList メソッド


パブリック メソッドパブリック メソッド

  名前 説明
パブリック メソッド AddIndex 検索使用されるインデックスに PropertyDescriptor を追加します
パブリック メソッド AddNew リスト新しい項目を追加します
パブリック メソッド ApplySort PropertyDescriptor と ListSortDirection に基づいて並べ替え行います
パブリック メソッド Find 指定されPropertyDescriptor保持する行のインデックス返します
パブリック メソッド RemoveIndex 検索使用されるインデックスから PropertyDescriptor削除します
パブリック メソッド RemoveSort ApplySort を使用して並べ替え適用した場合は、その並べ替え削除します
参照参照

IBindingList メンバ

データ ソースへの連結時の複雑な処理と単純な処理を両方ともサポートするために必要な機能提供します

IBindingList データ型公開されるメンバを以下の表に示します


パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ SupportsSorting リスト並べ替えサポートしているかどうかを示す値を取得します
パブリック メソッドパブリック メソッド
  名前 説明
パブリック メソッド AddIndex 検索使用されるインデックスに PropertyDescriptor を追加します
パブリック メソッド AddNew リスト新しい項目を追加します
パブリック メソッド ApplySort PropertyDescriptor と ListSortDirection に基づいて並べ替え行います
パブリック メソッド Find 指定されPropertyDescriptor保持する行のインデックス返します
パブリック メソッド RemoveIndex 検索使用されるインデックスから PropertyDescriptor削除します
パブリック メソッド RemoveSort ApplySort を使用して並べ替え適用した場合は、その並べ替え削除します
パブリック イベントパブリック イベント
  名前 説明
パブリック イベント ListChanged リストまたはリスト内の項目が変更され場合発生します
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「IBindingList」の関連用語

IBindingListのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



IBindingListのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS