SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

ページ内に別ウィンドウを持ったWPFアプリケーションの作成

ComponentOne Studio Enterprise 2011JのC1Windowコントロールを使ったWPFアプリケーションの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

コードの作成

 作成した2つのウィンドウは、メインページのボタンとテキストをクリックすると、呼び出して表示するようにします。この呼び出しの時に、作成した2つのユーザーコントロールをそれぞれC1Windowコントロールに組み込み、ダイアログボックスとして表示します。

 また、ツールボックスでは、CheckBoxコントロールのチェックのオンオフで、メインページのプロパティを操作する処理を組み込みます。

モーダルウィンドウの呼び出し処理

 C1Windowコントロールはコードから作成し、このContentプロパティにモーダルウィンドウの「about」オブジェクトを作成して設定します。

 このウィンドウは、ウィンドウを閉じないとメインページが操作できない「モーダル」ウィンドウとして表示させます。

 各コードの内の番号は、次の処理を行っています。

  1. TextBlockのイベントハンドラで、C1Windowクラスのコンストラクタを実行して変数に格納
  2. このクラスのHeaderプロパティでタイトルバーの文字列を設定
  3. ウィンドウのサイズを指定(タイトルバーが付くので、作成したユーザーコントロールよりも少し大きめに設定)
  4. ユーザーコントロールのコンストラクタを実行して、オブジェクトをContentプロパティに設定
  5. ダイアログをアプリケーションの中心に置きたい場合は、CenterOnScreenメソッドを実行
  6. モーダル表示時のメインウィンドウは、デフォルトでは薄いグレー表示。ModalBackgroundプロパティを使うとこの色を変えることが可能(プロパティの値はBrushオブジェクト)
  7. アバウトダイアログは最小化・最大化する必要がないため、これらのボタンを非表示
  8. C1Windowコントロールのプロパティ設定後、ShowModalメソッドを実行してモーダル表示
Visual Basic
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
C#
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コントロールを作成します。ただし、ツールボックスはアバウトダイアログと違い、ダイアログを表示しながらアプリケーションを操作できる「モードレス表示」にします。

 各コードの内の番号は、次の処理を行っています。

  1. C1Windowクラスのコンストラクタを実行して変数に格納
  2. Headerプロパティでタイトルバーの文字列を設定
  3. ウィンドウのサイズを指定
  4. ユーザーコントロールのコンストラクタを実行し、オブジェクトをContentプロパティに設定
  5. ツールボックスの場合は、アプリケーションの中心ではなく左端に配置したいので、Top/Leftプロパティを使って表示位置を指定
  6. ツールボックスの最小化・最大化の必要はないので、これらのボタンを非表示
  7. ツールボックスの場合はモードレス表示にするため、Showメソッドを実行
Visual Basic
'ツールボックスページを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
C#
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();
}

次のページ
まとめ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6240 2018/03/15 15:50

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング