Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何基于BindingList创建类?_C#_Class_Bindinglist - Fatal编程技术网

C# 如何基于BindingList创建类?

C# 如何基于BindingList创建类?,c#,class,bindinglist,C#,Class,Bindinglist,我需要一份班级名单,它将附在文件中 对列表所做的所有更改都将保存到文件中 我希望保留功能bindingslist,并在文件名中添加一个字符串,并处理OnChange事件 我该怎么做 我写了一个类,它工作,但不完全。如何修复它 public class ListLinkedToFile { private string _fileName = ""; public BindingList<string> List; pu

我需要一份班级名单,它将附在文件中

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

我希望保留功能bindingslist,并在文件名中添加一个字符串,并处理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();
        }
    }

您需要的是从
BindingList
派生或实现
IBindingList
——这被称为@bokibeg,如果我重写
OnListChanged(ListChangedEventArgs e)
我在哪里可以得到list
文件。writeAllines(FileName,list/*?*/)您可能不想这样做:
    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();