c# - WPF - 避免在 RichTexBox 上的文件加载时触发 TextChanged 事件
问题描述
问题:有什么方法可以检测应用程序的RichTextBox ( RTB
) 中文件加载的发生WPF
吗?我在这个事件列表中没有找到这样的事件;或者该列表中可能有一些事件可用于解决以下问题:
背景我允许用户在 RTB 中加载文件并在进行更改后关闭它(如果需要)。但在用户关闭文件之前,我的应用程序通过在TextChanged事件中放置bTextChanged
标志来检查更改是否已进行。但我注意到即使加载文件也会触发该事件。更糟糕的是,新加载文件的每个字符都会触发该事件——如果加载的文件太长,最终会降低应用程序的性能。所以也许有一种解决方法可以使事件仅在文件加载后更改文件中的文本时触发。TextChanged
TextChanged
public partial class MainWindow : Window
{
string sgFileName = "";
bool bTextChanged = false;
....
....
private void BtnOpenFile_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Rich Text Format (*.rtf)|*.rtf|All files (*.*)|*.*";
if (dlg.ShowDialog() == true)
{
sgFileName = dlg.FileName;
FileStream fileStream = new FileStream(sgFileName, FileMode.Open);
TextRange range = new TextRange(mainRTB.Document.ContentStart, mainRTB.Document.ContentEnd);
range.Load(fileStream, DataFormats.Rtf);
}
}
private void MainRTB_TextChanged(object sender, TextChangedEventArgs e)
{
bTextChanged = true;
}
private void BtnCloseDocument_Click(object sender, RoutedEventArgs e)
{
if (bTextChanged)
{
MessageBoxResult result = MessageBox.Show("Content has changed, do you want to save the changes?", "Content has Changed!", MessageBoxButton.YesNoCancel);
switch (result)
{
....
}
}
}
....
....
}
解决方案
推荐阅读
- reactjs - 屏幕尺寸较小时如何不显示表格中的图像?
- angular - Electron 构建成功后出现白屏
- angular - p-schedule : 如果一个事件叠加在另一个事件上,则不能删除它
- command-line - pycharm,pytest的编辑配置参数不起作用
- ruby-on-rails - ApplicationController 中的动态/正则表达式参数
- r - 有没有比 file.info() 更快的替代方法?
- powerbi - 将每行具有不同度量的 Tableau 报表转换为 Power BI
- reactjs - react-hook-form 不发送 PasswordConfirm
- c - 如何使ASCII表中字母的数量等于C中的数字范围的条件?
- angular - RxJS finalize():将最后发出的值传递给回调