Вопрос : Есть ли способ обнаружить возникновение загрузки файла в RichTextBox (RTB
) приложения WPF
? Я не нашел такого события в этом списке событий; или, может быть, в этом списке есть какое-то событие, которое можно использовать для решения следующих задач:
Фон Я разрешаю пользователю загрузить файл в RTB и закрыть его после внесения изменений (при необходимости). Но перед тем, как пользователь закрывает файл, мое приложение проверяет, были ли внесены изменения, помещая флаг bTextChanged
в событие TextChanged . Но я заметил, что событие 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)
{
....
}
}
}
....
....
}