コードの作成
作成した2つのウィンドウは、メインページのボタンとテキストをクリックすると、呼び出して表示するようにします。この呼び出しの時に、作成した2つのユーザーコントロールをそれぞれC1Windowコントロールに組み込み、ダイアログボックスとして表示します。
また、ツールボックスでは、CheckBoxコントロールのチェックのオンオフで、メインページのプロパティを操作する処理を組み込みます。
モーダルウィンドウの呼び出し処理
C1Windowコントロールはコードから作成し、このContentプロパティにモーダルウィンドウの「about」オブジェクトを作成して設定します。
このウィンドウは、ウィンドウを閉じないとメインページが操作できない「モーダル」ウィンドウとして表示させます。
各コードの内の番号は、次の処理を行っています。
- TextBlockのイベントハンドラで、C1Windowクラスのコンストラクタを実行して変数に格納
- このクラスのHeaderプロパティでタイトルバーの文字列を設定
- ウィンドウのサイズを指定(タイトルバーが付くので、作成したユーザーコントロールよりも少し大きめに設定)
- ユーザーコントロールのコンストラクタを実行して、オブジェクトをContentプロパティに設定
- ダイアログをアプリケーションの中心に置きたい場合は、CenterOnScreenメソッドを実行
- モーダル表示時のメインウィンドウは、デフォルトでは薄いグレー表示。ModalBackgroundプロパティを使うとこの色を変えることが可能(プロパティの値はBrushオブジェクト)
- アバウトダイアログは最小化・最大化する必要がないため、これらのボタンを非表示
- C1Windowコントロールのプロパティ設定後、ShowModalメソッドを実行してモーダル表示
Imports C1.WPF
'アバウトダイアログページをC1Windowに組み込んで使う
Private Sub TextBlock1_MouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
(1) Dim wnd As New C1Window()
(2) wnd.Header = "このアプリケーションについて"
(3) wnd.Height = 250
wnd.Width = 400
(4) wnd.Content = New about()
(5) wnd.CenterOnScreen()
(6) wnd.ModalBackground = New SolidColorBrush(Colors.Azure)
(7) wnd.ShowMinimizeButton = False
wnd.ShowMaximizeButton = False
(8) wnd.ShowModal()
End Sub
using C1.WPF;
// アバウトダイアログページをC1Windowに組み込んで使う
private void TextBlock1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
(1) C1Window wnd = new C1Window();
(2) wnd.Header = "このアプリケーションについて";
(3) wnd.Height = 250;
wnd.Width = 400;
(4) wnd.Content = new about();
(5) wnd.CenterOnScreen();
(6) wnd.ModalBackground = new SolidColorBrush(Colors.Azure);
(7) wnd.ShowMinimizeButton = false;
wnd.ShowMaximizeButton = false;
(8) wnd.ShowModal();
}
ツールボックスの呼び出し処理
ツールボックスも、アバウトダイアログと同様にコードからC1Windowコントロールを作成します。ただし、ツールボックスはアバウトダイアログと違い、ダイアログを表示しながらアプリケーションを操作できる「モードレス表示」にします。
各コードの内の番号は、次の処理を行っています。
- C1Windowクラスのコンストラクタを実行して変数に格納
- Headerプロパティでタイトルバーの文字列を設定
- ウィンドウのサイズを指定
- ユーザーコントロールのコンストラクタを実行し、オブジェクトをContentプロパティに設定
- ツールボックスの場合は、アプリケーションの中心ではなく左端に配置したいので、Top/Leftプロパティを使って表示位置を指定
- ツールボックスの最小化・最大化の必要はないので、これらのボタンを非表示
- ツールボックスの場合はモードレス表示にするため、Showメソッドを実行
'ツールボックスページをC1Windowに組み込んで使う
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
(1) Dim wnd As New C1Window()
(2) wnd.Header = "設定"
(3) wnd.Height = 120
wnd.Width = 200
(4) wnd.Content = New Toolbox()
(5) wnd.Left = 10
wnd.Top = 40
(6) wnd.ShowMinimizeButton = False
wnd.ShowMaximizeButton = False
(7) wnd.Show()
End Sub
private void Button1_Click(object sender, RoutedEventArgs e)
{
(1) C1Window wnd = new C1Window();
(2) wnd.Header = "設定";
(3) wnd.Height = 120;
wnd.Width = 200;
(4) wnd.Content = new toolbox();
(5) wnd.Left = 10;
wnd.Top = 40;
(6) wnd.ShowMinimizeButton = false;
wnd.ShowMaximizeButton = false;
(7) wnd.Show();
}
