Открытие программной формы окна из другой формы

Я делаю приложение Windows Forms. У меня есть форма. Я хочу открыть новую форму во время выполнения из исходной формы нажатием кнопки. А затем закройте эту новую форму (через 2,3 секунды) программно, но из потока, отличного от основного потока gui.

  • Кто-нибудь может мне помочь, как это сделать?
  • Будет ли новая форма затрагивать или препятствовать тому, что происходит в исходной основной форме? (если да, то как это остановить?)

Ответ 1

Чтобы открыть с помощью кнопки нажмите, пожалуйста, добавьте следующий код в обработчик событий кнопки

Form1 m = new Form1();
            m.Show();

Здесь Form1 - это имя формы, которую вы хотите открыть.

Также, чтобы закрыть текущую форму, вы можете использовать

this.close();

Ответ 2

Я бы сделал это следующим образом:

Form2 frm2 = new Form2();
frm2.Show();

и закрыть текущую форму, я бы использовал

this.Hide(); вместо

this.close();

ознакомьтесь с этой ссылкой Youtube для простых учебных руководств по запуску, которые могут показаться вам полезными, если u - новичок

Ответ 3

Вам просто нужно использовать Dispatcher для выполнения графической операции из потока, а затем потока пользовательского интерфейса. Я не думаю, что это повлияет на поведение основной формы. Это может помочь вам: Доступ к управлению пользовательским интерфейсом из BackgroundWorker Thread

Ответ 4

Это слишком старый вопрос, но отвечающий за сбор знаний.

У нас есть оригинальная форма (основная форма) с кнопкой для отображения новой формы (вторая форма).

enter image description here

Код для нажатия кнопки ниже

        private void button1_Click(object sender, EventArgs e)
        {
            New_Form new_Form = new New_Form();
            new_Form.Show();
        }

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

this.Load += new System.EventHandler(this.OnPageLoad);

Эта функция OnPageLoad запускается при загрузке этой формы

В NewForm.cs,

    public partial class New_Form : Form
    {
        private System.Windows.Forms.Timer formClosingTimer;
        public New_Form()
        {
            InitializeComponent();
        }
        private void OnPageLoad(object sender, EventArgs e)
        {
            formClosingTimer = new System.Windows.Forms.Timer();  // Creating a new timer 
            formClosingTimer.Tick += new EventHandler(CloseForm); // Defining tick event to invoke after a time period
            formClosingTimer.Interval = 2000; // Time Interval in miliseconds
            formClosingTimer.Start(); // Starting a timer
        }
        private void CloseForm(object sender, EventArgs e)
        {
            formClosingTimer.Stop(); // Stoping timer. If we dont stop, function will be triggered in regular intervals
            this.Close(); // Closing the current form
        }
    }

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

Вот новая форма, которая автоматически закрывается через 2 секунды, мы сможем работать с обеими формами, где нет помех между этими двумя формами.

enter image description here

Насколько вам известно,

form.close() освободит память, и мы больше никогда не сможем взаимодействовать с этой формой

form.hide() просто скрывает форму, где часть кода все еще может работать

Для получения дополнительной информации о таймере перейдите по этой ссылке, https://docs.microsoft.com/en-us/dotnet/api/system.timers.timer?view=netframework-4.7.2

Ответ 5

private void btnchangerate_Click(object sender, EventArgs e)
    {
        this.Hide();  //current form will hide
        Form1 fm = new Form1(); //another form will open
        fm.Show();


    }

при нажатии btn текущая форма скрывается и открывается новая форма

Ответ 6

Это также может помочь:

void ButtQuitClick(object sender, EventArgs e)
{
    QuitWin form = new QuitWin();
    form.Show();
}

Измените ButtQuit на свое имя кнопки, а также измените QuitWin на имя формы, которое вы сделали.

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