C#当用户控件变为活动状态时,如何自动刷新文本文件中的数据?

问题描述 投票:0回答:1

我有一个表单,按钮和usercontrols加载每个按钮。

1.在其中一个用户控件中有一个Listbox,用于从文本文件加载项目。在这里,您还可以添加新项目,这些项目会更新列表框和文本文件。

  1. 另一个usercontrol有一个Checklistbox,它也可以从文本文件中加载项目。在这里,您可以从文本文件中删除清单框中的项目和行(项目),这将更新checklistbox和textfile。

问题:从UserControl转到UserControl时,它不会在任何更改后从文本文件刷新/更新列表框或checkedlistbox。

期望:每当表单或任何用户控件处于活动状态时,它都应自动从文本文件更新/刷新其数据。

这会将第一个UC(1)中的文本文件加载到列表框中。

    private void ucAddNewPerson_Load(object sender, EventArgs e)
    {

        System.IO.StreamReader ReadFile = new System.IO.StreamReader(@"D:\Projects\APPAR\Budget app\PersonList.txt");

        string line;
        while ((line = ReadFile.ReadLine()) != null)
        {
            PersonListBox.Items.Add(line);
        }

        ReadFile.Close();

        if (ReadFile == null)
        {
            PersonListBox.Items.Clear();
        }
    }

有没有办法让它自动加载更改或我是否必须添加刷新按钮来解决这个问题?

提前致谢!

c# listbox text-files refresh
1个回答
1
投票

看一下FileSystemWatcher类。它会在文件更改时生成事件,此时您可以重新加载控件。代码看起来像这样:

      public void watchFile()
      {
         var watcher = new FileSystemWatcher(@"D:\Projects\APPAR\Budget app\", "PersonList.txt")
         {
            NotifyFilter = NotifyFilters.LastWrite
         };
         watcher.Changed += (sender, args) => RefreshControl(this);
      }
© www.soinside.com 2019 - 2024. All rights reserved.