SHOEISHA iD

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

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

ComponentZine(ComponentOne)

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

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

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

CheckBoxコントロールがクリックされた時の処理

 ツールボックスに配置したCheckBoxコントロールでは、メインページの背景色と枠線を操作するようにします。それぞれのCheckBoxコントロールのChecked/Uncheckedイベントハンドラでこの処理を実行します。メインページをユーザーコントロールから操作する場合は、「Application.Current.MainWindow」を使用してメインページをオブジェクトとして取得し、各プロパティを操作します。

 また、枠線の表示/非表示は、枠線の太さの設定によって実装しています。この処理では、BorderThicknessプロパティを使用し、プロパティの値にThicknessオブジェクトを設定します。クラスのコンストラクタの引数で、縦横四辺の枠線の太さを変えることができます。

Visual Basic
Public Class Toolbox

    Private mw As Window = Application.Current.MainWindow
    Private Sub CheckBox1_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
        mw.Background = New SolidColorBrush(Colors.BlueViolet)
    End Sub

    Private Sub CheckBox1_Unchecked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
        mw.Background = New SolidColorBrush(Colors.White)
    End Sub

    Private Sub CheckBox2_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
        Dim th2 As New Thickness(2, 2, 2, 2)
        mw.BorderThickness = th2
    End Sub

    Private Sub CheckBox2_Unchecked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
        Dim th0 As New Thickness(0, 0, 0, 0)
        mw.BorderThickness = th0
    End Sub
End Class
C#
public partial class toolbox : UserControl
{
    public toolbox()
    {
        InitializeComponent();
    }

    private Window mw = Application.Current.MainWindow;
    private void CheckBox1_Checked(object sender, RoutedEventArgs e)
    {
        mw.Background = new SolidColorBrush(Colors.BlueViolet);
    }

    private void CheckBox1_Unchecked(object sender, RoutedEventArgs e)
    {
        mw.Background = new SolidColorBrush(Colors.White);
    }

    private void CheckBox2_Checked(object sender, RoutedEventArgs e)
    {
        Thickness th2 = new Thickness(2, 2, 2, 2);
        mw.BorderThickness = th2;
    }

    private void CheckBox2_Unchecked(object sender, RoutedEventArgs e)
    {
        Thickness th0 = new Thickness(0,0,0,0);
        mw.BorderThickness = th0;
    }
}

まとめ

 C1Windowコントロールを使用すると、手軽にカスタムウィンドウを作成できます。ダイアログのデザインも、通常のWPFページと同様にデザイナを使ってXAMLで作成できるので、好きなコントロールを使って自由なレイアウトを表現できます。

 C1Windowコントロールを呼び出すメソッドによって、モードレス/モーダルを切り替えることができるため、サブウィンドウが必要なアプリケーションの作成には大いに威力を発揮するコントロールだと思います。

参考文献

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング