Member 11727674 Ответов: 3

Закрыть(не свернуть) первую форму "бутон" нажать и перейти на вторую форму C#


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

Что я уже пробовал:

я пытался:
Backup form2 = new Backup();
     form2.ShowDialog();
     this.close();

но это не мой результат

BillWoodruff

Это приложение winform ?

Member 11727674

Да

Karthik_Mahalingam

пробовать
формы Form2.Показать();

3 Ответов

Рейтинг:
0

Khaja Moiz

Для закрытия формы вы можете использовать это.close();
в противном случае , как только появится всплывающее сообщение о том , хотите ли вы выйти , если пользователь нажмет на кнопку да, то вы можете использовать приведенный ниже код

if(DialogSettingsCancel.ShowDialog() == DialogResult.Yes)
{
     this.close();
}


надеюсь, это поможет


Member 11727674

Когда я это сделал, вторая форма не открылась, а заявка закрылась.

Рейтинг:
0

OriginalGriff

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

Что вы можете сделать, так это: отредактировать файл program.cs и изменить стартовую форму на свою вторую форму - это строка, которая говорит что-то вроде этого:

Application.Run(new frmMain());
Затем в конструкторе второй формы откройте исходную первую форму с помощью ShowDialog
Когда первая форма закроется, вторая форма продолжит работу с этой точки и будет отображена.


Member 11727674

Но я не хочу, чтобы вторая форма была моим стартапом project.is это возможно?

OriginalGriff

Ваша вторая форма не будет отображаться до тех пор, пока исходная первая форма не закроется - поэтому она будет выглядеть так, как будто исходная первая форма является "реальной первой формой" для пользователя.

Попробуйте - и вы поймете, что я имею в виду.

Рейтинг:
0

BillWoodruff

Первое, что нужно понять, это то, что когда вы создаете приложение WinForm и запускаете его, форма, которую оно запускает, находится в основном методе Program.cs ... упоминается как "основная форма"... когда она будет закрыта ... закроет приложение, а все остальные формы приложение уже открыло.

Итак, вы могли бы сделать это:

1. пусть приложение запустит то, что теперь является вашей второй формой в качестве основной формы.

2. скройте главное окно формы и покажите, что теперь является вашей основной формой

3. когда вторичная форма закрыта, покажите основную форму:

using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace TwoFormApp
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            // stop layout
            SuspendLayout();
        }

        // what was your Main Form
        private SecondaryForm sForm;

        private void Form1_Load(object sender, EventArgs e)
        {      
            sForm = new SecondaryForm();
            sForm.Closing += SFormOnClosing;

            sForm.Show();
        }

        private void SFormOnClosing(object sender, CancelEventArgs cancelEventArgs)
        {
            // show the main foem
            this.Show();
        }

        private void MainForm_Shown(object sender, EventArgs e)
        {
            // hide the main form
            this.Hide();
            ResumeLayout();
        }
    }
}
Приложение WinForm позволит вам скрыть основную форму только тогда, когда событие 'showed будет вызвано во время процесса запуска пользовательского интерфейса.

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


Member 11727674

Я не хочу, чтобы вторая форма была формой запуска проекта, которую я хочу, нажав на кнопку в form1, form1 close и form2 start.is это возможно?

BillWoodruff

Дело в том, что в стандартном приложении WinForm закрытие основной формы приведет к закрытию приложения и всех открытых форм.

Если вы хотите другого поведения, то вам нужно изменить архитектуру вашего приложения. Существует способ запустить приложение WinForm без "основной формы" (используя пользовательский ApplicationContext) и нескольких форм. Я сомневаюсь, что это то, чего ты хочешь здесь.