C#でフォーム閉じる方法とは?戻り値の取得方法をご紹介!

- SE
- C#でのフォームを閉じるにはどのような方法があるのですか。
- PM
- C#のフォームを閉じるには、Form.Closeメソッドを使用する方法と別のアプリケーションからFormを閉じる方法があります。
この記事でわかること
C#のフォームを閉じる方法とは?
今回は、C#でのフォームを閉じる方法について説明します。フォームを閉じる方法や閉じさせない方法について、実際のソースコードを交えて紹介します。
また、フォームを閉じた際の、戻り値を取得する方法についても紹介します。C#でのフォームを閉じる方法に興味のある方はぜひご覧ください。
Formを閉じる(自分自身のFormを閉じる)
C#のフォームを閉じるには、Form.Closeメソッドを使用します。
フォームにボタンを配置し、ボタンのクリックイベントで閉じるサンプルプログラムです。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // Formを閉じる this.Close(); } } } |
button1ボタンをクリックすると、フォームが閉じられることが分かります。
また、Closeメソッドではなく、C#のApplication.Exitメソッドでアプリケーション自体を終了できます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // Formを閉じる Application.Exit(); } } } |
button1ボタンをクリックすると、フォームが閉じられることが分かります。
Formを閉じる(別アプリから閉じる)
C#では、別のアプリケーションからFormを閉じることもできます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
using System; using System.Diagnostics; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // 自プロセスのプロセス名を取得する Process myProcess = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName(myProcess.ProcessName); // WindowsFormsApp1をすべて終了させる foreach (Process process in processes) { // クローズメッセージを送信する process.CloseMainWindow(); // プロセスが終了するまで最大10秒待機する process.WaitForExit(10000); // プロセスが終了したか確認する if (!process.HasExited) { MessageBox.Show("終了しませんでした。"); } } //this.Close(); } } } |
WindowsFormsApp1.exeの出力フォルダを開き、WindowsFormsApp1.exeを2つ起動します。
どちらかのbutton1ボタンをクリックすると、WindowsFormsApp1.exeが2つとも終了することが分かります。
Formを閉じさせない
C#のフォームが閉じられるのをキャンセルしたり、アプリケーション自体の終了をキャンセルしたりすることがあります。また、フォームが閉じられるときに、FormClosingイベントが呼び出されます。
引数のFormClosingEventArgsのCancelプロパティにTrueを代入することで、フォームを閉じさせなくすることが可能です。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // Formを閉じる this.Close(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // Formを閉じさせない e.Cancel = true; } } } |
ボタン操作ではフォームが閉じられないことが分かります。
タスクマネージャーからアプリケーションを終了させてください。
閉じるボタンの非表示
C#のフォームの×ボタンを非表示にすることもできます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); // ×ボタンを消す。最小化、最大化ボタンも消える this.ControlBox = false; } private void button1_Click(object sender, EventArgs e) { // Formを閉じる this.Close(); } } } |
この場合、最小化、最大化ボタンも消えてしまいます。
button1ボタンをクリックして終了させてください。
閉じた場合の戻り値
C#のフォームの戻り値を取得できます。
実際のソースコードを見てみましょう。
・呼ぶ側
1 2 3 4 |
Form1 form = new Form1(); MessageBox.Show(form.ShowDialog().ToString()); |
・呼ばれた側
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // Formを閉じる this.DialogResult = System.Windows.Forms.DialogResult.OK; this.Close(); } private void button2_Click(object sender, EventArgs e) { // Formを閉じる this.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.Close(); } } } |
このように、フォームを閉じた際の戻り値を取得できます。
- SE
- フォームを閉じさせなくすることもできるのですね。
- PM
- そうですね。閉じるボタンを非表示にすることもできますよ。
C#のソースコードを書いてみよう
C#でのフォームを閉じる方法や、閉じさせない方法を紹介しました。また、フォームを閉じた際の戻り値を取得する方法についても紹介しました。
ぜひご自身でC#のソースコードを書いて、理解を深めてください。