Я хотел бы спросить пользователя, когда он нажимает кнопку закрытия: сохранить файл, отменить изменения или вернуться, если содержимое RichTextBox изменилось. Подобно Windows Notepad или любому другому текстовому редактору. Как я мог это сделать?Отменить изменения подтвердить при выходе программы, если содержимое richtextbox изменено.
ответ
Необходимо, чтобы read about events и как они работают. В этом случае вы заинтересованы в событии TextChanged
мероприятия RichTextBox
и FormClosing
событиях формы.
TextChanged
событие возникает, когда содержимое текстового поля изменяются. Один из способов отслеживания изменений в текстовом поле - просто использовать логическое значение. Обязательно установите его на false
, когда вы загружаете данные в текстовое поле. Затем, когда пользователь меняет текст, загорается событие TextChanged
, и вы можете установить значение _textChanged
(в приведенном ниже примере) значение true
.
Аналогичным образом, использование события FormClosing
позволяет вам отреагировать на пользователя, пытающегося закрыть форму.
Это событие проходит FormClosingEventArgs
значение e
, что позволяет отменить закрытие формы (в данном случае, если пользователь выбирает отменить при появлении запроса о тексте, которые были изменены). Он также позволяет выполнять любые другие действия до закрытия формы.
Чтобы создать диалоговое окно сообщений, вы можете использовать соответствующую перегрузку MessageBox.Show
- эта функция возвращает DialogResult
, указав, какие из кнопок пользователь нажал. Это позволяет выполнять различные действия в зависимости от выбора пользователя.
Если вы не знаете, как связать эти события, то я предлагаю вам прочитать s ome of the basic documentation and examples. Это довольно элементарный материал, который вам нужно будет понять, чтобы многое сделать на C#. Примерами здесь являются winforms, так как вы не указали иначе.
Это тривиальный пример:
public partial class Form1 : Form
{
private bool _textChanged;
public Form1()
{
InitializeComponent();
// load data to richtextbox, then ....
_textChanged = false;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
_textChanged = true;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (_textChanged)
{
DialogResult rslt = MessageBox.Show("save changes?", "some caption",
MessageBoxButtons.YesNoCancel);
if (rslt == DialogResult.Yes)
{
// save changes and exit
}
else if (rslt == DialogResult.Cancel)
{
e.Cancel = true;
// cancel close, return to form
}
// else do not save and continue closing form
}
}
}
- 1. сбой программы при выходе
- 2. Обновление RowSet, если содержимое таблицы изменено?
- 3. MySQL не будет обновляться, если содержимое изменено
- 4. Возвращаемые значения при выходе программы
- 5. Повторное подтверждение при выходе программы
- 6. iOS - подтвердить диалог при выходе из контроллера
- 7. printf flush при выходе программы
- 8. Изменено содержимое узла Tinymce
- 9. Отменить в RichTextBox не отменить Вложенный текст
- 10. Произошла ли утечка памяти при выходе программы?
- 11. java.lang.IllegalStateException: Изменено содержимое адаптера
- 12. Как сериализовать класс при выходе из программы
- 13. Ошибка памяти C# при выходе программы
- 14. подтвердить, когда изменения выбраны, если iframe загружен
- 15. Сбой программы C++/SFML при выходе
- 16. Двойное подтверждение при выходе
- 17. Содержимое RichTextBox не обновляется при сохранении
- 18. Как отменить навигацию в RichTextBox
- 19. Подтвердить перед директивой о выходе
- 20. Как очистить содержимое richtextbox?
- 21. Функция вызова при выходе программы в java
- 22. Сбой программы Twisted/tkinter при выходе
- 23. Ошибка программы при выходе файла C++
- 24. Как закрыть CMD при выходе другой программы?
- 25. Исключение при выходе из программы (Ogre3d)
- 26. выключение службы выполнения при выходе программы
- 27. UIWebView Содержимое не изменено пользователем
- 28. Confused на выходе следующей программы
- 29. C# Содержимое веб-браузера изменено
- 30. winforms gridview содержимое ячейки изменено
Великий. Сделай так. У вас есть наше одобрение. – nvoigt
Пожалуйста, покажите нам, что вы пробовали до сих пор. Мы поможем вам исправить это. –
Я пробовал искать, не получил ничего, что сработало бы. Это просто не сработало. Похоже, никто не задавал такого вопроса. Потому что я хочу, чтобы он отображался только при изменении содержимого текстового поля. – XeZrunner