在Loaded Text文件中发生更改时刷新C#列表框
本文关键字:刷新 列表 Text Loaded 文件 | 更新日期: 2023-09-27 18:21:19
好的,我知道有人问过类似的问题,但我正试图让Listbox监视另一个程序更改的文本文件。我设置它来选择文件中的顶部行,并根据该行执行命令,然后删除顶部行。我只需要列表框在删除后刷新并读取新的顶部行,然后继续读取直到为空。我还让它监视串行端口是否打开。(我希望它只在串行端口关闭时循环)。我是C#的新手,所以我们非常感谢您的帮助。我当前的代码:
public partial class Form1 : Form
{
List<string> myList = new List<string>();
public Form1()
{
InitializeComponent();
myList = System.IO.File.ReadLines("textfile").ToList();
this.GPSCOM.DataSource = myList;
GPSCOM.SelectionMode = SelectionMode.One;
myList.FirstOrDefault();
GPSCOM.SetSelected(0, true);
if (serialPort.IsOpen)
{
return;
}
else
{
for(;;)
{
switch ((string)GPSCOM.SelectedItem)
{
case "set1":
var lines = System.IO.File.ReadAllLines("textfile");
System.IO.File.WriteAllLines("textfile", lines.Skip(1).ToArray());
return;
case "set2":
var lines1 = System.IO.File.ReadAllLines("textfile");
System.IO.File.WriteAllLines("textfile", lines1.Skip(1).ToArray());
return;
case "set3":
var lines2 = System.IO.File.ReadAllLines("textfile");
System.IO.File.WriteAllLines("textfile", lines2.Skip(1).ToArray());
return;
}
}
}
}
FileSystemWatcher将是您的最佳选择。
然而,我想问一下,将其他程序输出到其标准输出流并使用System.Diagnosis中的ProcessStartInfo重定向输出是否不方便。If将是一个更快、更直接的解决方案,因为数据可以在两个程序之间直接移动,而不是使用不太间接的文件存储方法。把中间人裁掉。
您最好使用FileSystemWatcher并捕获更改通知,而不是连续轮询文件的内容。