Как сохранить форму, которую я запустил, используя метод.Show() на экране

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

Беда в том, когда я использую модальную команду Form.ShowDialog()Я не могу отойти от дополнительной формы и получить доступ к основной, поэтому я не могу запустить вторую дополнительную.

Проблема, с которой я сталкиваюсь Form.Show(), как только форма запускается, она снова закрывается. Конечно, он запускает начальную функцию, но затем он немедленно исчезает. Каков наилучший способ приблизиться к этому немодальному дисплею, но сохранить формы?

РЕДАКТИРОВАТЬ: Вот немного формата, в котором я работаю. У меня есть собственный класс Process, который обрабатывает формы, каждый процесс хранится в списке в консольном приложении, и у каждого свой собственный myFORM.

public class Process
{
    /*The process class is used to track all running processes related to GeFoss(any forms or consol apps, etc)
     * Methods:
     *      -initialize: This has two overloads, one for a form, and one for general objects. Basically this just starts the main part of the app
     *      -ShowDialog: This simply calls the Form.ShowDialog method if the process controls a Form
     *      -_NewThread: Begins a new thread centered on Leo
     *      -Leo: simply launches another copy of the same Object
     */


    public Form myFORM;
    public Type mytype;
.
.
.
.
.
.    .
.
.
 public void ShowDialog()
    {
        //This should only be called when the type of Process is a form. If it isn't a form though, the try-catch will prevent a crash
        try
        {

            myFORM.Show();
        }
        catch (Exception ex)
        {
            MessageBox.Show(Convert.ToString(ex));
        }
    }\

\

РЕДАКТИРОВАТЬ: я смог найти обходной путь. Поскольку проект, над которым я работаю, похож на имитируемую ОС, я сказал ему запустить основную форму графического интерфейса с помощью Form.ShowDialog() и все последующие формы с помощью Form.Show(), и это, похоже, работает для меня

1 ответ

Вам нужно создать другую форму. Form form = new Form();Прямо сейчас вы объявляете свой объект, но никогда не создаете его. Форма myForm это как int a; у него нет никаких переменных. Для каждого объекта вы сможете сделать то же самое, что и класс Form: form.Show(); Вы ссылаетесь на один и тот же объект. Вот почему это закрывается.

Другие вопросы по тегам