![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| ДобренькийПапаша |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
У меня первой прогружается форма для аутентификации.
В аутентификации следующее, здесь есть кнопка Вход, при нажатии которой, происходит вызов функции ValidateUser (если всё хорошо), то я присваиваю свойству Visible этой формы false, таким образом получая полный комплект для проверки if в предыдущем коде, эта форма должна быть уничтожена ибо обёрнута в using и должна запустится Application.Run(new MainForm). Однако машина что-то немного думает, а потом завершает приложение... а почему, просто непонятно!!!
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
||||
|
|||||
| KelTron |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 5 Всего: 38 |
Ну во первых, что за лишний объект создаётся:
Во вторых using тут нафиг не нужен таким образом AuthenticationForm уничтожится уже после того как завершится приложение, а не до появления MainForm И такой вопрос: у тебя установлена кнопка LogButton как AcceptButton у формы AuthenticationForm и установлено ли свойство LogButton.DialogResult = DialogResult.OK? Ибо если нет, то 1) curF.ShowDialog() никогда не вернёт тебе DialogResult.OK 2) AuthenticationForm не закроется, т.к. ты её не закрываешь при нажатии на эту кнопку. Возможно что у тебя прога и не завершается, а тупо форма становится невидимой и ничего не происходит. Вот этот код тоже меня смущает:
Зачем тут создавать объект формы? П.С. Пройдись по коду отладчиком. Это сообщение отредактировал(а) KelTron - 15.6.2009, 18:06 -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
||||
|
|||||
| ДобренькийПапаша |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Свойство DialogResult не было установлено. Ну и ну, я вообще-то его выставлял... видимо откатилось каким-то макаром. Теперь всё нормально.
Если тут не создать объект то не могу обратиться к (путь к серверу и базе) GetDbConnection(ex.ServerPath.Text, ex.BasePath.Text)) (обращаюсь через объект, как по другому не знаю, в конце объект уничтожаю, вызывая Dispose() так что не думаю что это повлияет на производительность. Добавлено через 11 минут и 49 секунд Теперь непонятно почему, вообще в любом случае, чтобы я не набрал в форме аутентификации, после выдачи сообщения типа вы прошли аутентификацию и даже после сообщения "Такой логин или пароль недействителен" прогружается основная форма (которая при неверно логине или пароле прогружаться не должна). Такое ощущение будто конструкция if плевать не хотела на проверку curF.Visible==false -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
||||
|
|||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 5 Всего: 38 |
Я так понял у тебя на форме AuthenticationForm 2 текстбокса
Так зачем создавать лишний объект почему нельзя сделать так?
... А заметил, у тебя методы статичные...но а зачем они статичные)) Сделай обыкновенными. Ещё: я так думаю у тебя данные в эти текстбоксы забиты в редакторе форм и поэтому что то работает. Ты же создаёшь форму и читаешь оттуда значения, но ты эту форму даже не открываешь, поэтому когда почистишь текстбоксы в дизайнере, то код работать перестанет. Это сообщение отредактировал(а) KelTron - 15.6.2009, 18:43 -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
| ДобренькийПапаша |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Поправил как ты сказал, щас дам комменты:
здесь пока так:
Я не знаю как остановить по нормальному форму аутентификации, какой дополнительный параметр сравнить, если аутентификация успешна? А то у меня кроме нажатия кнопки проверяется свойство визибл которое я устанавливаю в false но это же идиотизм, я это понимаю, но не знаю как сделать нормально...((( Это сообщение отредактировал(а) ДобренькийПапаша - 15.6.2009, 18:59 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
||||
|
|||||
| KelTron |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 5 Всего: 38 |
Предлагаю так исправить код:
1)
2)
Я тут слегка упростил, хотя можно было бы и ещё, попробуй такой код. Это сообщение отредактировал(а) KelTron - 15.6.2009, 19:18 -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
||||
|
|||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Application.Run(new MainForm());
срабатывает в любом случае, даже если аутентификация не успешна! Добавлено через 13 минут и 37 секунд Мне непонятно вот что... Надо что-то вернуть типа переменной-флага (flag) ... дать true А в основном коде делать сравнение if(curF.ShowDialog()==DialogResult.OK && flag==true) { ApplecationRun(new MainForm()) } и тогда будет всё нормально я думаю. А как организовать передачу этого флага я не понимаю...((( -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
создал в классе аутентификации
public bool grant=false; В функции проверки при верном логине и пароле присваиваю true при неверном false. теперь делаю цикл и сравниваю. Так всё работает. Но безопасно ли такое поле, фактически выписывающее билет в программу делать public? И как можно сделать безопасно? Через свойство пойдёт?
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 5 Всего: 38 |
Ну а для чего по твоему нужен DialogResult? Логика в том, чтобы при успехе закрыть форму и т.к. у кнопки установлен DialogResult.OK, то результат ShowDialog() будет OK. Если же аутентификация неудачна, то просто не позволить пользователю закрыть форму при нажатии на эту кнопку => ShowDialog() не вернёт OK. А у тебя видимо форма закрывается в любом случае при нажатии на эту кнопку, поэтому и такое поведение... -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 5 Всего: 38 |
Я совсем забыл про особенность этих DialogResult - ов.
Если установить это свойство у кнопки, то форма будет закрываться в любом случае, при нажатии на эту кнопку... Поэтому его нужно убрать и сделать так:
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Да сделал уже всё))))
Код оптимизировал. Спасибо за помощь! -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |