#c# #winforms
#c# #winforms
Вопрос:
У меня есть три вкладки в элементе управления вкладками Windows Forms. В настоящее время в Tab1 у меня есть кнопка, которая сохраняет информацию в текстовом поле и автоматически изменяет tabcontrol.Выбранный индекс в Tab2. Затем Tab2 использует информацию, сохраненную из текстового поля tab1.
Я хочу, чтобы окно сообщения всплывало всякий раз, когда пользователь изменяет текстовое поле в tab1, но затем вручную нажимает tab2 или tab3, не нажимая кнопку для сохранения информации.
Итак, вкратце, у меня получилось так, что нажатие кнопки на tab1 автоматически отправляет ее в tab2. Я хочу, чтобы окно сообщения отображалось, если кнопка на tab1 не была нажата, когда информация была изменена, и пользователь вручную изменил вкладку.
Ответ №1:
Я думаю, что дизайн, подобный мастеру, для вашего приложения является более подходящим. Вкладки не должны так работать с точки зрения пользователя.
Но обходной путь для вашей текущей ситуации заключается в:
- объявите переменную, например
dirty
- устанавливайте эту переменную всякий раз, когда какой-либо элемент управления в tab1 был отредактирован
- очистите переменную, если нажата кнопка в tab1
- проверьте это, если выбраны tab2 или tab3
Комментарии:
1. спасибо, этот обходной путь, вероятно, лучшее решение на данный момент. Я понимаю, что это не совсем то, для чего были созданы вкладки. В будущем я буду иметь это в виду.
Ответ №2:
Вы можете использовать событие отмены выбора в TabControl, чтобы получать информацию об изменении выбранной вкладки. Если отменяемая вкладка — это вкладка с кнопкой на ней, и информация не сохраняется, вы можете отобразить окно сообщения.
Кроме того, в зависимости от того, что делает ваша программа, может иметь смысл продолжить и сохранить информацию при изменении вкладки, даже не беспокоя пользователя.
Комментарии:
1. Это все равно будет срабатывать при нажатии кнопки.
2. @jmccarthy: Я не совсем уверен, что вы имеете в виду.
3. В вашем первоначальном ответе говорилось использовать событие SelectedIndexChanged, но это срабатывает при изменении свойства SelectedIndex в элементе управления tab. Я предполагаю, что OP изменяет это свойство при нажатии кнопки, что приведет к запуску этого события. OP хочет, чтобы окно сообщения отображалось только тогда, когда кнопка не нажата, так что это не сработало бы. Однако с тех пор вы изменили свой ответ, поэтому мой первый комментарий недействителен.
4. @jmccarthy: ох… теперь это имеет больше смысла. Я забыл, что OP заставляет нажатие кнопки отправлять пользователя на вкладку 2.
5. Я думаю, что, возможно, если мне нужно сохранить это автоматически, я могу заставить всплывающее окно уведомлять о том, что изменения были сохранены каждый раз, когда tab1 отменяется. Спасибо