WinForms 앱에서 여러 개 열도록 한 모든 기본 양식을 닫을 때 응용 프로그램을 종료하는 쉬운 방법

4958 단어 .NETFramework

소개



Windows Forms 응용 프로그램에서 여러 양식(기본 창)을 자유롭게 열고 모두 닫을 때 응용 프로그램을 종료합니다. Multiple Top-level Interface (MTI)라는 사람입니다.

코드



폼은 다음 화면과 같은 버튼 컨트롤 하나(buttonOpen이라는 이름)를 배치합니다.


System.Windows.Forms.Application 클래스가 편리하게 측정해 줍니다.

Program.cs
using System;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            (new Form1()).Show();
            Application.Run(); // <- Form とアプリケーション(メッセージポンプ)終了を連動させず、Application.Exit()で終了メッセージを受け取るまで動作させる。

            //Application.Run(new Form1());
        }
    }
}


MainForm.cs
using System;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void buttonOpen_Click(object sender, EventArgs e)
        {
            (new Form1()).Show();
        }

        protected override void OnClosed(EventArgs e)
        {
            base.OnClosed(e);

            if (Application.OpenForms.Count == 1) // <- 開いているメインフォームの数
            {
                Application.Exit();
            }
        }
    }
}

결과



디버깅을 실행하고 모든 양식의 Open 버튼을 클릭하면 양식이 성장합니다. 오른쪽 상단의 x 버튼을 사용하여 양식을 모두 닫으면 응용 프로그램이 끝나고 디버거가 종료됩니다.

좋은 웹페이지 즐겨찾기