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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#当用户控件变为活动状态时,如何自动刷新文本文件中的数据?相关的知识,希望对你有一定的参考价值。

我有一个表单,按钮和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:ProjectsAPPARBudget appPersonList.txt");

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

        ReadFile.Close();

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

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

提前致谢!

答案

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

      public void watchFile()
      {
         var watcher = new FileSystemWatcher(@"D:ProjectsAPPARBudget app", "PersonList.txt")
         {
            NotifyFilter = NotifyFilters.LastWrite
         };
         watcher.Changed += (sender, args) => RefreshControl(this);
      }

以上是关于C#当用户控件变为活动状态时,如何自动刷新文本文件中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

当 UISearchBar 变为活动状态时,UISearchResultsTableView 不会出现

如何使 PHFComposeBarView 控件在 Swift iOS 应用程序中变为活动状态?

当用户将移动设备变为横向时如何刷新网页

Cocoa/Objective-C - 带有文本输入的子窗口,而主窗口没有变为非活动状态

显示视图时 UITableView 变为非活动状态

c#如何使一个文本框变为不可编辑?但是又可以复制里面的数据?