TabPage Проверка запуска события при нажатии на выбранной в данный момент вкладке - PullRequest
0 голосов
/ 28 апреля 2010

Я делаю вещи, как сказано в Как запретить пользователю изменять выбранную вкладку в TabControl?

Все работает нормально. Но событие проверки tabpage1 происходит, если у меня выбран tabpage1 и пользователь нажимает на саму tabpage1. и позже, когда пользователь нажимает на tabpage2, событие проверки для tabpage1 не срабатывает.

Что произойдет, если я сделаю e.Cancel при проверке события tabpage1, в приведенном выше случае, когда пользователь по ошибке нажимает на tabpage1, когда tabpage1 уже выбран, пользователю будет предложено: сохранить данные или перейти с текущей вкладки? и если пользователь нажимает Stay, но не вносит никаких изменений. И затем, когда он правильно щелкает tabpage2, событие проверки tabpage1 не запускается.

Я загрузил пример приложения здесь . Вы можете запустить и увидеть поведение, чтобы правильно понять проблему

Ответы [ 2 ]

1 голос
/ 28 апреля 2010

Используйте <a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.tabcontrol.selecting.aspx" rel="nofollow noreferrer">TabControl.Selecting Event</a> вместо.

Используйте это так:

tabControl1.Selecting += tabControl1_Selecting;

private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
    e.Cancel = !(can switch tab);
}
1 голос
/ 28 апреля 2010

Это пример того, как валидатор должен вести себя , это просто не удачное совпадение с вкладками.

Вы можете использовать события выбора / выбора и написать еще немного логики самостоятельно. Или откажитесь от закладок или от идеи, что они должны проверяться индивидуально.

...