Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 20.11.2013
Сообщений: 6

Не открывает вторую форму после закрытия

20.11.2013, 19:54. Показов 2362. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаю в первой форме объект второй формы и открываю его по нажатию кнопки таким образом:

C#
1
2
3
4
5
6
7
8
9
10
11
public  partial class Form1 : Form
    {
        public static Form2 drawForm = new Form2();
        ...
        private void drawbutton_Click(object sender, EventArgs e)
        {
            drawForm.Show();
            Output();
        }
        ...
     }
После того, как закрываю окошко второй формы больше не могу его открыть по нажатию drawbutton (выдает exception, что объект уничтожен). Как это обойти?
p.s. : drawForm также используется в других методах Form1 и в другом классе (поэтому написал static).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.11.2013, 19:54
Ответы с готовыми решениями:

первая форма вызывает вторую форму передавая некоторые параметры, как во время закрытия 2-й формы передать из нее данные в 1-ю?
Во время обработки события в первой форме я вызываю вторую форму, в которой пользователь выбирает Дату, после чего требуется для дальнейшей...

Закрыть первую форму и перейти на вторую форму
Как сделать, чтоб на 1-й форме, нажав кнопку выход закрылась вся первая форма, а при нажатии на кнопку переход, был бы переход на вторую...

При первом запуске программы показывать первую форму, а при остальных вторую форму
при первом запуске программы показывать первую форму а при остальных вторую форму

7
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
20.11.2013, 19:58
должно быть вы где-то делаете drawForm.Dispose(); что и уничтожает форму.
C#
1
2
3
4
5
6
private void drawbutton_Click(object sender, EventArgs e)
        {
            if(drawForm==null) drawForm = new Form2();
            drawForm.Show();
            Output();
        }
0
0 / 0 / 0
Регистрация: 20.11.2013
Сообщений: 6
20.11.2013, 20:11  [ТС]
Попробовал, выдает, что (drawForm==null) это false, но на следующем шаге при drawForm.Show(); так и выбрасывает ObjectDisposedException
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
20.11.2013, 20:55
проверьте в деббагере значение drawForm
0
48 / 48 / 22
Регистрация: 18.11.2013
Сообщений: 92
20.11.2013, 21:26
вы объявляете создание экземпляра формы внутри класса первой формы, по дефолту при нажатии на крестик с ней и будет происходить Dispose (можете пронаблюдать это в отладчике)
если вам не принципиально, и нужен не конкретно этот экземпляр, создавайте каждый раз новый в обработчике нажатия кнопки
0
0 / 0 / 0
Регистрация: 20.11.2013
Сообщений: 6
20.11.2013, 21:33  [ТС]
Проблема решилась вот так:
C#
1
2
3
4
5
6
7
8
9
  private void drawbutton_Click(object sender, EventArgs e)
        {
            if (drawForm.IsDisposed == true)
            {
                drawForm = new Form2();
            }
            drawForm.Show();
            Output();
        }
Если такое решение не влечет нехороших последствий (вроде не должно), то, наверное, тему можно закрывать
Спасибо отписавшимся.
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
21.11.2013, 00:05
Всегда использую код, работающий безотказно
Условие: принимающий объект в форме 2 (int, Double, textBox) должен иметь свойство public
Код, например. передаем значение int n =´12234 в форму 2 int n1;
C#
1
2
3
4
 Form2 f2 = new Form2();
 f2.n1 = n; 
 f2.Show();
 this.Hide();
0
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
21.11.2013, 10:02
есть маленький хак:

если показывать форму через Show, то она диспозится после закрытия. если же через ShowDialog - то нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2013, 10:02
Помогаю со студенческими работами здесь

Две формы, на первой кнопка которая открывает вторую форму
Есть две формы, на первой кнопка нажатие которой открывает вторую. Как так сделать? Сорь, что такой нубский вопрос, поиск ниче не дал!

Сбросить форму после закрытия popup окна
Доброго времени суток всем и с наступающими праздниками, такая вот проблема возникла, необходимо после закрытия popup окна сбросить форму,...

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

Добавить на форму таблицу значений с сохранением значения после закрытия
Всем доброго времени суток! Есть форма настроек учетной политики, привязанная к регистру сведений. Конфа нестандартная, но не суть....

Из программы открыть форму, и продожить выполнение той же процедуры после ее закрытия
Хочу из программы открыть форму и продожить выполнение тойже процедуры после ее закрытия. Форма дожна быть немодальной, т.е acDialog не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru