Basic Library for WPF/Silverlight
モーダルおよびモードレスダイアログウィンドウ
製品の概要 > Windows > Windows の機能 > モーダルおよびモードレスダイアログウィンドウ

ダイアログボックスは、アプリケーションでユーザーから入力を得るためによく使用されます。たとえば、ダイアログボックスを使ってユーザーに入力を促し、入力を得ると、自動的にダイアログボックスを閉じるか破棄するアプリケーションがあります。

また、ダイアログボックスを使って情報を表示したまま、ユーザーが別のウィンドウで作業できるようにしているアプリケーションもあります。たとえば、Microsoft Word でスペルをチェックする際は、ダイアログボックスが開いたままになるため、ドキュメントのテキストを読んで編集しながら、スペルチェッカによって次のスペルミスの単語を検索できます。アプリケーションがさまざまな方法でダイアログボックスを使用できるように、C1Window は、モーダルモードレスの2つのタイプのダイアログウィンドウをサポートします。

モーダルダイアログウィンドウは、先に閉じないと、現在のアプリケーションの作業を続けることができない子ウィンドウです。通常、モーダルダイアログウィンドウを閉じるまでは、そのウィンドウがシステム全体または表示元のアプリケーションを制御します。たとえば、モーダルダイアログウィンドウを使用すれば、ユーザーからログイン情報を取得するまで、アプリケーションの操作を続行できないようにすることができます。モーダルウィンドウは、重要な情報を表示したり、ユーザーに操作を要求するときに便利です。

ShowModal メソッドを使用すると、C1Window コントロールをモーダルダイアログボックスとして表示できます。

Visual Basic
コードのコピー
'The Show method is seen here in an If...Then...Else statement.
If showModal Then
        wnd.ShowModal()
    Else
        wnd.Show()
    End If

C#
コードのコピー
//The Show method is seen here in an if...else statement.
if (showModal)
      wnd.ShowModal();
    else
      wnd.Show();

モーダル背景色の設定

ModalBackground プロパティを設定すると、この背景色をカスタマイズできます。

  1. Button_Click イベントのコードは、次のようになります。
Visual Basic
コードのコピー
Private Sub ShowDialog(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim window = New C1Window()
    window.Content = New MyWindow()
    window.CenterOnScreen()
    Dim bgcol As New SolidColorBrush()
    bgcol.Color = Color.FromArgb(150, 255, 0, 0)
    window.ModalBackground = bgcol
    window.ShowModal()
End Sub
C#
コードのコピー
void ShowDialog(object sender, RoutedEventArgs e)
{
    var window = new C1Window();
    window.Content = new MyWindow();
    window.CenterOnScreen();
    SolidColorBrush bgcol = new SolidColorBrush();
    bgcol.Color = Color.FromArgb(150, 255, 0, 0);
    window.ModalBackground = bgcol;
    window.ShowModal();
}
  1. アプリケーションを実行し、ダイアログウィンドウをモーダルダイアログボックスとして開きます。ウィンドウの背景色が赤色などの選択した色になっていることを確認します。

 

モードレスダイアログウィンドウは、このダイアログウィンドウが表示されていても、ユーザーが他のウィンドウを操作できるようにします。要求する情報が作業の続行に必須でない場合は、このタイプのダイアログウィンドウを使用します。モードレスダイアログウィンドウは、入力フォーカスを持ち続けないため、ユーザーは同時に2つのアプリケーションで作業できます。

メニューやヘルプシステムでダイアログウィンドウとアプリケーションウィンドウを同時に使用できるようにする場合に、モードレスダイアログウィンドウはよく使用されます。たとえば、ツールバーをアプリケーションからデタッチし、ツールバー内の項目を選択して、その機能をデタッチされたアプリケーションに適用できる場合、そのツールバーはモードレスダイアログウィンドウです。

Show メソッドを使用すると、C1Window コントロールをモードレスダイアログボックスとして表示できます。

Visual Basic
コードのコピー
'The Show method is seen here in an If...Then...Else statement.
If showModal Then
        wnd.ShowModal()
    Else
        wnd.Show()
    End If

C#
コードのコピー
//The Show method is seen here in an if...else statement.
if (showModal)
      wnd.ShowModal();
    else
      wnd.Show();