在wpf中,我有一个文本框,它的内容来自txt文件.
在代码behine看起来像:
public MyWindow()
{
InitializeComponent();
ReadFromTxt();
}
void Refresh(object sender, RoutedEventArgs e)
{
ReadFromTxt();
}
void ReadFromTxt()
{
string[] lines = System.IO.File.ReadAllLines(@"D:\Log.txt");
foreach (string line in lines)
{
MyTextBox.AppendText(line + Environment.NewLine);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是txt文件内容在运行时期间正在发生变化,是否可以与这些更改同步?我的意思是如果改变txt文件,文本框内容将会改变.如果有可能请提供一些代码示例ic#或XAML.
我现在的解决方案是我创建了一个"刷新"按钮,可以从txt文件中再次读取
您可以配置FileSystemWatcher. 我添加了FileWatcherConfigure函数作为示例。
每当文件更改时,FileChanged事件就会被发布。您应该RefreshTextbox使用该事件触发该方法。
FileSystemWatcher fileWatcher = new FileSystemWatcher();
string filePath = @"./Log.txt";
public MainWindow()
{
InitializeComponent();
ReadFromTxt();
FileWatherConfigure();
}
public void FileWatherConfigure()
{
fileWatcher.Path = System.IO.Path.GetDirectoryName(filePath);
fileWatcher.Filter = System.IO.Path.GetFileName(filePath);
fileWatcher.Changed += FileWatcher_Changed;
fileWatcher.EnableRaisingEvents = true;
}
private void FileWatcher_Changed(object sender, FileSystemEventArgs e)
{
Thread.Sleep(TimeSpan.FromSeconds(1));
ReadFromTxt();
}
void ReadFromTxt()
{
string[] lines = System.IO.File.ReadAllLines(filePath);
MyTextBox.Dispatcher.Invoke(() => { this.MyTextBox.Text = string.Join(Environment.NewLine, lines); });
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |