DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

条件によりフォームが閉じられないようにする

勝手にフォームが閉じられては困る場合があります。このような時は、フォームのFormClosingイベントハンドラでフォームを閉じてもよいか判断し、閉じないときにはFormClosingEventArgsオブジェクトのCancelプロパティをTrueにします。

次の例ではフォーム(Form1)が最大化状態のときは閉じられないようにしています。

VB.NET
コードを隠すコードを選択
'フォームのFormClosingイベントハンドラ
Private Sub Form1_FormClosing(ByVal sender As System.Object, _
        ByVal e As System.Windows.Forms.FormClosingEventArgs) _
        Handles MyBase.FormClosing
    If Me.WindowState = FormWindowState.Maximized Then
        '最大化されているときは閉じない
        e.Cancel = True
    End If
End Sub
C#
コードを隠すコードを選択
//フォームのFormClosingイベントハンドラ
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (this.WindowState == FormWindowState.Maximized)
        //最大化されているときは閉じない
        e.Cancel = true;
}

.NET Framework 1.1以前ではFormClosingイベントが使えませんので、フォームのClosingイベントハンドラで、CancelEventArgs.CancelプロパティをTrueにします。

VB.NET
コードを隠すコードを選択
'フォームのClosingイベントハンドラ
Private Sub Form1_Closing(ByVal sender As Object, _
        ByVal e As System.ComponentModel.CancelEventArgs) _
        Handles MyBase.Closing
    If Me.WindowState = FormWindowState.Maximized Then
        '最大化されているときは閉じない
        e.Cancel = True
    End If
End Sub
C#
コードを隠すコードを選択
//フォームのClosingイベントハンドラ
private void Form1_Closing(object sender,
    System.ComponentModel.CancelEventArgs e)
{
    if (this.WindowState == FormWindowState.Maximized)
        //最大化されているときは閉じない
        e.Cancel = true;
}
  • 履歴:
  • 2007/1/15 .NET Framework 2.0に関する記述を追加。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • イベントハンドラの意味が分からない、C#のコードをそのまま書いても動かないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。