Просмотр исходного кода

Прокомментирован код страницы авторизации

Alec 3 лет назад
Родитель
Сommit
92a5375adb
1 измененных файлов с 40 добавлено и 1 удалено
  1. 40 1
      WPF01/pages/Authorization.xaml.cs

+ 40 - 1
WPF01/pages/Authorization.xaml.cs

@@ -27,55 +27,93 @@ namespace WPF01.pages
 		// Количество неверно веденного пароля
 		int count = 0;
 
+        // Таймер, который будет отсчитывать время разблокировки
+        // кнопки Вход в случае 3 неверных попыток ввода логин и пароля
 		Timer timer = new Timer();
 
+        // Конструктор окна авторизации
         public Authorization()
         {
             InitializeComponent();
 
-            timer.Interval = 5000;
+            // Задать время счетчику 1 минута (60000 миллисекунд)
+            timer.Interval = 60000;
+
+            // Установить событие (функция Timeout) которое
+            // будет вызвано, когда 1 минута пройдет
+            // (после запуска timer.Start())
             timer.Elapsed += new ElapsedEventHandler(Timeout);
         }
 
+        // Функция для вызова таймером
         void Timeout(object sender, ElapsedEventArgs e)
         {
+            // Для доступа к кнопке необходим особый механизм
+            // Диспетчер помещает в общую очередь задач
+            // действие, которое будет вызвано в UI потоке.
+            // В общем нужно просто запомнить эту запись
             Dispatcher.Invoke(new Action(() =>
             {
+                // Включить кнопку
                 buttonLogin.IsEnabled = true;
+                // Остановить таймер
                 timer.Stop();
             }));
+
+            // Вместо записи () => {} можно было бы использовать
+            // имя функции.
+            // например, new Action(имяФункции)
         }
 
         private void ButtonClick(object sender, RoutedEventArgs e)
         {
+            // Записать значение полей Логин и Пароль
+            // в одтельные переменные для удобства использования
             string login = textBoxLogin.Text;
             string password = textBoxPassword.Password;
 
+            // Проверить количество введенных символов
+            // в поля Логин и Пароль
             if (login.Length < 4 || password.Length < 4)
             {
                 return;
             }
 
+            // Получить из таблицы Manager запись, которая соответствует
+            // указанному логину и паролю (login, password)
             IQueryable<Manager> man = Database.Context.Manager.Where(
                 m => m.Login == login && m.Password == password);
 
+            // Из полученного результата попытаться взять первую запись
             Database.User = man.FirstOrDefault();
             if (Database.User == null)
             {
+                // Если записей нет, то сказать пользователю
+                // о неправильном вводе
                 MessageBox.Show("Неверный логин/пароль");
+
+                // Увеличить счетчик неверно введенного пароля на единицу
 				count++;
 
+                // Если счетчик достиг значения 3, то...
 				if (count >= 3)
 				{
+                    // заблокировать кнопку Вход
 					buttonLogin.IsEnabled = false;
+                    // и запустить таймер на 1 минуту
+                    // После 1 минуты таймер разблокирует кнопку
 					timer.Start();
 				}
                 return;
             }
 
+            // Если пользователь был получен (из базы данных)
+            // то проверить его роль, и в соответствии с ролью
+            // открыть нужную страницу
 			switch (Database.User.Role)
 			{
 				case "Директор":
+                    // Для роли Директор октрыть страницу "директор"
 					NavigationService.Navigate(PageNavigation.director);
 					break;
 
@@ -92,6 +130,7 @@ namespace WPF01.pages
 					break;
 			}
 
+            // На главном окне показать кнопку Мои данные
 			PageNavigation.mainWindow.userInfoButton.Visibility = Visibility.Visible;
         }