Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

SQL Serverのデータをグリッドで表示するWPFアプリケーションの作成 その2

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

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2012/01/30 14:00
目次

GUIの作成

 これまで作成したウィンドウに、2つのCheckBoxコントロールを追加し、Checked/Uncheckedイベントハンドラを追加します。

 なお、C1FlexGridコンポーネントの概要については、『独自の入力グリッドを持ったWPFアプリケーションの作成』を参照ください。

GUIのデザインの修正
GUIのデザインの修正

セルのマージ

 C1FlexGridコントロールの優れている点は、多くの優秀な機能があらかじめコントロールに組み込まれており、メンバメソッドとプロパティを使ってこれらの機能を簡単に使うことができる点です。

 自分でコードを書くとなると、とても大変で膨大な作業量になってしまいますが、C1FlexGridコントロールではメンバメソッドやプロパティを呼び出す式を書くだけで済みます。グリッドのセルの結合(マージ)もあらかじめC1FlexGridコントロールに組み込まれており、この機能を使うかどうかと、どこのセルを結合するのかを指定するだけで、グリッド内のセルを自由に結合させることができます。

 使い方は簡単で、まずC1FlexGridコントロールの「AllowMerging」プロパティをTrueに設定し、グリッドレベルのセル結合機能を有効にします。設定値は「AllowMerging列挙体」のメンバで、以下の設定値を使用します。ここでは、セルを結合するので「Cells」を選びます。

AllowMerging列挙体
メンバ名 説明
None 結合しない
Cells スクロール可能なセルを結合
ColumnHeaders 列ヘッダーを結合
RowHeaders 行ヘッダーを結合
AllHeaders 列ヘッダーと行ヘッダーを結合
All すべての領域を結合

 Rows/Columnsプロパティで結合したいセルの方向を行列単位で指定します。そして、それらのセルの「AllowMerging」プロパティをTrueに設定すると、指定した行および列のセルを結合します。

 ここでは、同じカテゴリ名のセルを列単位で結合するため、Columnsプロパティに「CategoryName」を指定し、「AllowMerging」プロパティをTrueにします。カテゴリ名でグループ化していなければ、隣接する同じカテゴリ名のセルが結合されます。グループ化が実行されれば、そのまま同じカテゴリ名のセルが1つのセルに結合されます。セルの結合を解除する場合は、AllowMergingプロパティの値に「AllowMerging.None」を設定します。

セル結合前
セル結合前
カテゴリ名でグループ化していなければ、隣接する同じカテゴリ名のセルが結合される
カテゴリ名でグループ化していなければ、隣接する同じカテゴリ名のセルが結合される
グループ化が実行されれば、そのまま同じカテゴリ名のセルが1つのセルに結合される
グループ化が実行されれば、そのまま同じカテゴリ名のセルが結合される
Visual Basic
Private Sub CheckBox2_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles CheckBox2.Checked
    'セルのマージモードを設定
    C1FlexGrid1.AllowMerging = AllowMerging.Cells

    'カテゴリ名でセルを結合
    C1FlexGrid1.Columns("CategoryName").AllowMerging = True
    C1FlexGrid1.Columns("CategoryName").Foreground = New SolidColorBrush(Colors.MediumSeaGreen)
End Sub

Private Sub CheckBox2_Unchecked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles CheckBox2.Unchecked
    'セルの結合を解除
    C1FlexGrid1.AllowMerging = AllowMerging.None
    C1FlexGrid1.Columns("CategoryName").Foreground = New SolidColorBrush(Colors.Black)
End Sub
C#
private void checkBox2_Checked(object sender, RoutedEventArgs e)
{
    //セルのマージモードを設定
    C1FlexGrid1.AllowMerging = AllowMerging.Cells;

    //カテゴリ名でセルを結合
    C1FlexGrid1.Columns["CategoryName"].AllowMerging = true;
    C1FlexGrid1.Columns["CategoryName"].Foreground = new SolidColorBrush(Colors.MediumSeaGreen);
}

private void checkBox2_Unchecked(object sender, RoutedEventArgs e)
{
    //セルの結合を解除
    C1FlexGrid1.AllowMerging = AllowMerging.None;
    C1FlexGrid1.Columns["CategoryName"].Foreground = new SolidColorBrush(Colors.Black);
}

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

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

バックナンバー

連載:ComponentZine(ComponentOne Studio)

もっと読む

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5