SlideShare a Scribd company logo
1 of 8
C# モーダルフォームとモードレスフォーム
Microsoft MVP Hiroki.T
http://blog.hiros-dot.net/
copyright @2015 HIRO's.NET All Rights Reserved.
モーダルとモードレス
 フォームやダイアログボックスは、モーダルまたはモードレスのど
ちらかで表示されます。
 【モーダル画面】
メイン画面からサブ画面をモーダル表示すると、サブ画面が閉じ
られるまで親画面を操作することはできません
 【モードレス画面】
メイン画面からサブ画面をモードレス表示すると、メイン画面とサ
ブ画面の両方を操作することができます
サンプルプロジェクトの作成
 プロジェクトを新規で作成したら、新たに1つフォームを追加し、
Form1とForm2がある状態にします
 Form1にボタンを1つ配置します
モーダル起動(ShowDialogメソッド)
 モーダル起動をする場合はShowDialogメソッドを使用します。
 Form1に配置したボタンのクリックイベントを以下のように編集し実行してみましょう。
 ShowDialogメソッドが実行されるとForm2が表示されますが、次の行に記述されている
MessageBox.Showは実行されません。Form2が閉じられて初めて実行されます。
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog(); // モーダル起動
MessageBox.Show("Form2が閉じられました。");
}
Form2が閉じられない
限り、この行は実行さ
れない
モードレス起動(Showメソッド)
 モードレス起動をする場合はShowメソッドを使用します。
 ボタンのクリックイベントを以下のように編集し実行してみましょう。
 Showメソッドを実行すると、Form2の表示と同時にMessageBox.Showが実行されます。
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.Show(); // モードレス起動
MessageBox.Show("Form2が閉じられました。");
}
Form2が閉じられなくて
も、この行は実行される
モーダル起動のまとめ
 モーダル起動をする場合はShowDialogメソッドを使用する。
 サブ画面をモーダルで表示すると、サブ画面が閉じられるまで親
画面を操作することはできない
 モーダル起動では画面が閉じられない限り、プログラムは
ShowDialogの行で止まったままとなる
モードレス起動のまとめ
 モードレス起動をする場合はShowメソッドを使用する
 サブ画面をモードレスで表示すると、メイン画面とサブ画面の両
方を操作することができる
 モードレス起動では画面が閉じられなくても、Showメソッドの次の
行が実行される
End

More Related Content

More from Hiroki Takahashi

C# Database操作2 データの取得-
C# Database操作2  データの取得-C# Database操作2  データの取得-
C# Database操作2 データの取得-Hiroki Takahashi
 
C# Database操作1 接続と切断-
C# Database操作1  接続と切断-C# Database操作1  接続と切断-
C# Database操作1 接続と切断-Hiroki Takahashi
 
C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装Hiroki Takahashi
 
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行するC# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行するHiroki Takahashi
 
C# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベントC# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベントHiroki Takahashi
 
C# 継承フォームの作成
C# 継承フォームの作成C# 継承フォームの作成
C# 継承フォームの作成Hiroki Takahashi
 
C# FileSystemWatcherコントロールを使用したアプリケーションの作成
C# FileSystemWatcherコントロールを使用したアプリケーションの作成C# FileSystemWatcherコントロールを使用したアプリケーションの作成
C# FileSystemWatcherコントロールを使用したアプリケーションの作成Hiroki Takahashi
 
C#によるファイルの読み書き
C#によるファイルの読み書きC#によるファイルの読み書き
C#によるファイルの読み書きHiroki Takahashi
 

More from Hiroki Takahashi (8)

C# Database操作2 データの取得-
C# Database操作2  データの取得-C# Database操作2  データの取得-
C# Database操作2 データの取得-
 
C# Database操作1 接続と切断-
C# Database操作1  接続と切断-C# Database操作1  接続と切断-
C# Database操作1 接続と切断-
 
C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装
 
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行するC# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
 
C# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベントC# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベント
 
C# 継承フォームの作成
C# 継承フォームの作成C# 継承フォームの作成
C# 継承フォームの作成
 
C# FileSystemWatcherコントロールを使用したアプリケーションの作成
C# FileSystemWatcherコントロールを使用したアプリケーションの作成C# FileSystemWatcherコントロールを使用したアプリケーションの作成
C# FileSystemWatcherコントロールを使用したアプリケーションの作成
 
C#によるファイルの読み書き
C#によるファイルの読み書きC#によるファイルの読み書き
C#によるファイルの読み書き
 

C# モーダルフォームとモードレスフォーム