如何基于BindingList创建一个类?

时间:2015-03-13 11:32:43

标签: c# class bindinglist

我需要一个类列表,它将附加到文件中。

对列表所做的所有更改都将保存到文件中。

我想保留BindingList的功能,并在文件名中添加一个字符串并处理OnChange事件。

我该怎么做?

我写了一个有效但不完全的课程。如何解决?

    public class ListLinkedToFile
    {
        private string _fileName = "";
        public BindingList<string> List;

        public ListLinkedToFile(string FileName)
        {
            List = new BindingList<string>();
            _fileName = FileName;
            if (File.Exists(_fileName))
            {
                var _list = new List<string>(File.ReadAllLines(_fileName));
                List = new BindingList<string>(_list);
            }
            List.RaiseListChangedEvents = true;
            List.ListChanged += new ListChangedEventHandler(ListChanged);
        }

        public void ListChanged(object sender, ListChangedEventArgs e)
        {
            File.WriteAllLines(_fileName, List);
        }

        public void Add(string item)
        {
            List.Add(item);
        }

        public bool Remove(string item)
        {
            return List.Remove(item);
        }

        public void RemoveAt(int index)
        {
            List.RemoveAt(index);
        }

        public void Clear()
        {
            List.Clear();
        }
    }

我需要这样的东西。但我可以在哪里获得名单?

    public class ListLinkedToFile : BindingList<string>
    {
        public string FileName = "";

        protected override void OnListChanged(ListChangedEventArgs e)
        {
            base.OnListChanged(e);
            if (FileName != "") File.WriteAllLines(FileName, List /*?????????*/);
        }
    }

示例运行:

    var a = new ListLinkedToFile("123.txt");
    a.Add("hello");
    a.Add("my");
    a.RemoveAt(0);
    string line = a[0]; // of course not work how fix?
    a.Clear();

0 个答案:

没有答案