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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как ПРАВИЛЬНО кмногократно открывать форму, Многократное открываение дочерней формы 
V
    Опции темы
jang
Дата 18.10.2010, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!

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

Код

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Show(); //нужен именно Show(), а не ShowDialog()
        }


Является не правельным, т.к. каждый раз при нажатии содается новая форма, при этом вызывается контруктор ее и т.д.

Так делаю я в своем проекте

Код

        private Form2 f2;
        private bool ShowForm=false;

        private void button1_Click(object sender, EventArgs e)
        {
            if (ShowForm == true)
            {
                f2.Visible = true;
            }
            else
            {
                f2 = new Form2();
                f2.Show();
                ShowForm = true;
            }
        }


Закрываю дочернюю форму соответственно

Код

        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
                // Запрещаем закрытие формы пользователем
            if (e.CloseReason == CloseReason.UserClosing)
            {
                e.Cancel = true;
                this.Visible = false;
            }
        }


Но мне куажется этот способ очень кривой.

Какие еще есть варианты? ))

Это сообщение отредактировал(а) jang - 18.10.2010, 10:50
PM MAIL Skype   Вверх
Экскалупатор
Дата 18.10.2010, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

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



а почему нельзя просто разделить эти строки?
Код

 private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Show(); //нужен именно Show(), а не ShowDialog()
        }
       
сделать что то вроде:
Код

Form2 f2 = new Form2();

 private void button1_Click(object sender, EventArgs e)
        {
            f2.Show(); //нужен именно Show(), а не ShowDialog()
        }
   
т.е. объявить форму один раз, вызвать ее конструктор, а потом просто показывать по необходимости? она не будет создаваться каждый раз заново.
PM MAIL ICQ   Вверх
jang
Дата 18.10.2010, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



5 сек

Добавлено через 5 минут и 14 секунд
эх, понедельник понедельник...
Спасибо, постараюсь больше не задавать идиотских вопросов )

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

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


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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




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


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

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