问题:有什么方法可以检测RTB
应用的RichTextBox(WPF
)中文件加载的发生吗?我在this事件列表中找不到这样的事件;或该列表中有一些事件可用于解决以下问题:
背景:允许用户进行更改后load a file in the 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)
{
....
}
}
}
....
....
}