05/10/2019, 18:30

[C#] Hướng dẫn sử dụng ObservableCollection trong lập trình Winform

Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách sử dụng ObservableCollection trong lập trình C# winform. ObservableCollection C# là gì? Lớp Generic ObservableCollection<T> là một tập hợp tương tự như List<T> ..., tức là nó ...

Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách sử dụng ObservableCollection trong lập trình C# winform.

ObservableCollection C# là gì?

Lớp Generic ObservableCollection<T> là một tập hợp tương tự như List<T> ..., tức là nó mô tả một tập hợp dữ liệu có thể thay đổi số lượng bằng các phương thức quen thuộc như Add(), Remove(), Clear() ...

Nhưng với ObservableCollection<T> thì nó cung cấp thêm sự kiện thông báo nhi số lượng phần tử thay đổi, thêm, bớt ...(nghĩa là giám sát được biến động phần tử).
Event này có tên là CollectionChanged, trong tham số mà sự kiện gửi đến.
 
e.Action có cho biết hành động thay đổi trên tập hợp là gì (ví dụ: thêm NotifyCollectionChangedAction.Add, bớt NotifyCollectionChangedAction.Remove), clear tập hợp NotifyCollectionChangedAction.Reset ...
 
Kết quả demo ứng dụng:
ObservableCollection_demo
 
Ta có ví dụ sau:
using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Linq;

namespace ObservableCollection
{
    class Program
    {
        static void Main(string[] args)
        {
            ObservableCollection<String> obs = new ObservableCollection<String>();
            obs.CollectionChanged += Obs_CollectionChanged;
            //Thay các phần tử tập hợp
            obs.Add("Thao Meo");
            obs.Add("Cai Tri Minh");
            obs.Add("Vo Son Bang");
            obs.Add("Hoang Thi Thao");
            obs.Add("Nguyen Đinh Tuyen");
            obs.Add("Trinh Quoc Khang");
            obs.Add("Lap trinh VB.NET");
            obs.RemoveAt(1);
            obs.Clear();
            Console.Read();
        }

        private static void Obs_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
                case NotifyCollectionChangedAction.Add:
                    foreach (String s in e.NewItems)
                        Console.WriteLine("Event Add Item: " + s);
                    break;
                case NotifyCollectionChangedAction.Remove:
                    foreach (String s in e.OldItems)
                        Console.WriteLine("Event Remove item: " + s);
                    break;
                case NotifyCollectionChangedAction.Replace:
                    Console.WriteLine("Event Replace");
                    break;
                case NotifyCollectionChangedAction.Move:
                    Console.WriteLine("Event RemoveMove");
                    break;
                case NotifyCollectionChangedAction.Reset:
                    Console.WriteLine("Event Reset");
                    break;
                default:
                    break;
            }


        }
    }
}

Thanks for watching!

DOWNLOAD SOURCE

Tags: observablecollection c#
0