Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поменять главную форму в потоке 
:(
    Опции темы
informatik
Дата 15.6.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: нет
Всего: 6



Вроде что то такое было на форуме, но вот найти немогу..

Есть однопоточное приложение.
Сначала запускается форма авторизации, в ней создаются пользовательские IIdentity и IPrincipal и задаются потоку.

После прохождения авторизации нужно закрыть форму авторизации и открыть главную форму, но вот незадача, если закрыть форму авторизации то закрывается приложение, если спрятать то форма авторизации все равно остается главной в потоке и для закрытия приложения нужно ее уничтожать.. в общем как то так..

Как поменять главную форму в потоке? Какое есть решение? Подскажите?
--------------------
namespace informatik
PM MAIL   Вверх
mihryak
Дата 15.6.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



можно в program.cs до(!) 
Код

Application.Run(new MainForm());

создать, показать авторизационную форму и на основании её результатов уже выполнить (или не выполнять - зависит от потребностей) вышеприведённую строчку.
PM MAIL ICQ   Вверх
informatik
Дата 15.6.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: нет
Всего: 6



Это и ежику понятно... спасиба..но не то..

--------------------
namespace informatik
PM MAIL   Вверх
mihryak
Дата 15.6.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



ну можно поиграться с Application.Run(), можно использовать одну форму, перестраивая её компоненты на лету
только вот зачем..
чем мой вариант не подходит?
PM MAIL ICQ   Вверх
Bishop
Дата 15.6.2008, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 3.6.2005
Где: Минск, Беларусь

Репутация: 6
Всего: 16



informatik, 
Метод Application.Run(Form mainForm) добавляет переданной форме обработчик события Closed, в котором вызывается ExitThread. Так форма и становится "главной". Можно использовать другие перегрузки Run, а формы создавать и управлять завершением приложения явно. Смотрите пример для Application.Run(ApplicationContext context).
Но, по-моему, для формы авторизации более подходит вариант mihryak.
PM WWW ICQ   Вверх
informatik
Дата 16.6.2008, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: нет
Всего: 6



Спасибо... Bishop, усе понятно. Попытаюсь чтонить сделать и выбрать лучший вариант...
--------------------
namespace informatik
PM MAIL   Вверх
Genrih1
Дата 18.6.2008, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.11.2007

Репутация: нет
Всего: нет



лучший способ imho, не залезая в автоматически генерируемый код типа Application.Run()
Код

private void MainForm_Load(object sender, EventArgs e)
    {
      AuthorizationForm form = new AuthorizationForm();
      if (form.ShowDialog() != DialogResult.OK)
      {
        this.Close();
      }
    }



Это сообщение отредактировал(а) Genrih1 - 18.6.2008, 19:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.