特集
.NET Framework 2.0のWindowsフォーム新機能(後編)

新グリッド・コントロールの豊富な機能と高い表現力

えムナウ(児玉宏之)
Microsoft MVP 2005 - Visual C#)
2005/09/10

Page1 Page2 Page3

2. DataGridViewコントロールが持つ強力な拡張機能

 DataGridViewコントロールの拡張機能には、例えば周辺のパーツとして、DataGridViewコントロール専用の検索ツールバーを容易に作成できる機能などがある。そこで本稿では、先ほど作成した顧客マスター・メンテナンス画面に、「顧客名による検索ツールバー」を追加してみることにしよう。

■「顧客名による検索ツールバー」の<クエリ>の作成

 これにはまず、検索ツールバーで使用する「クエリ」(Query)を作成する必要がある。クエリとはSQL Serverで検索を行うときに使用されるSQL文(SELECT文)のことである。クエリは、具体的には次の画面のようにして作成する。

検索ツールバーのクエリを作成
検索ツールバーで利用するクエリ(SQL命令文)を作成しているところ。
  [ソリューション エクスプローラ]でデータセットのファイル(本稿の例では「VsTestDBDataSet.xsd」)をダブルクリックしてデータセットのデザイナでそれを表示する。
  「顧客」テーブルのタイトルを右クリックして、表示されるコンテキスト・メニューから[追加]−[Query]を選ぶ。これにより、[TableAdapter クエリの構成ウィザード]ダイアログが開かれる。
  TableAdapter クエリの構成ウィザードで実際のクエリを作成する。本稿の例では、[コマンドの種類を選択します]ページで「SQL ステートメントを使用する」を選択し、[クエリの種類]ページで「複数行を返すSELECT」を選択する。その次の[SQL SELECTステートメントの指定]ページで、検索用のSELECT文を指定する。このSELECT文の指定では、[クエリ ビルダ]が利用できる。本稿ではこのクエリ・ビルダで、「姓」の列の[フィルタ]に「@Param1」を、「名」の列の[フィルタ]に「@Param2」を入力してSELECT文を作成する。その次の[生成するメソッドの選択]ページで「DataTableにデータを格納する」にのみチェックを入れて、メソッド名として「FillByName」を入力する。後は[完了]ボタンをクリックして実際にTableAdapterクエリを作成する。
  すると「FillByName(Param1,Param2)」という顧客TableAdapterクエリが作成されたことが確認できる。

■「顧客名による検索ツールバー」の作成

 クエリが作成できたら、顧客名検索ツールバーを作成しよう。これを実際に行っているのが、次の画面だ。

検索ツールバーの作成
顧客名検索ツールバーを作成しているところ。
  Windowsフォーム・デザイナに表示されたDataGridViewコントロールの右上の矢印(スマート・タグ)をクリックして、表示される[DataGridView タスク]メニューから[クエリの追加]を選択する。
  前述の「データセットの追加」で作成されたデータソース・テーブル(本稿では「VsTestDBDataSet顧客」:「VsTestDBDataSet」データセットの「顧客」テーブル)を選択する。
  クエリ(ここでは「既存のクエリ」として「FillByName(Param1,Param2)」)を選択する。
  [OK]ボタンをクリックすると、Windowsフォーム上部に検索ツールバーが自動的に追加される。

 このようにVS 2005では、DataGridViewコントロールを拡張するための機能を、IDEのデザイナ画面から簡単に追加・実装できる。これにより、開発生産性を落とさずに、高度な機能を実装することが可能だ。

3. DataGridViewコントロールの高度な表現力

 @IT会議室などの掲示板で、(従来の)DataGridコントロールに関連する質問の多くの割合を占めていたものは、「セル単位や行単位に色を変更したい」「クリックしたら行選択にしたい」など、表現力に関するものだった。そのような表現力への要求に対して、新しいDataGridViewコントロールは力強く応えてくれる。DataGridViewコントロールでは、表現力を高めるためのクラスやプロパティが大幅に追加されて、多彩な表示とカスタマイズが可能になっているのだ。

 最後にこれらのクラスやプロパティについて簡単に紹介しよう。

■DataGridViewCellStyleクラスが持つ表示カスタマイズ機能

 DataGridViewCellStyleクラスは、セルの表示形式(以降、セル・スタイル)を制御するクラスだ。これを使うことで、全体のデフォルトのセル・スタイル(DefaultCellStyle)が設定できるだけでなく、以下のような項目の設定も可能になっている。

  • 行ヘッダのデフォルト・セル・スタイル(RowHeadersDefaultCellStyle)

  • 列ヘッダのデフォルト・セル・スタイル(ColumnHeadersDefaultCellStyle)

  • 行単位のデフォルト・セル・スタイル(RowDefaultCellStyle)

  • 奇数行単位のデフォルト・セル・スタイル(AlternatingRowDefaultCellStyle)

 さらには、以下のような任意セルのデフォルトのセル・スタイルを設定することも可能だ。

  • m行目の行のデフォルト・セル・スタイル(Rows[m].DefaultCellStyle)

  • n列目の列のデフォルト・セル・スタイル(Columns[n].DefaultCellStyle)

  • m行目n列目のセル・スタイル(Rows[m].Cells[n].Style)

 次の画面は、実際にセル・スタイルを設定するために、[CellStyle ビルダ]ダイアログを実行しているところだ。

[CellStyle ビルダ]ダイアログ
CellStyleビルダは、Windowsフォームのデザイン時に、[プロパティ]ウィンドウでDataGridViewCellStyleクラスのインスタンスのプロパティ内容を変更するためのツールである。このクラスは、左右の配置位置(Alignmentプロパティ)、背景色(BackColor)、フォント(Font)、前景色(ForeColor)、表示形式(Format)、Null値の表示形式(NullValue)、余白のサイズ(Padding)、選択時の背景色(SelectionBackColor)や前景色(SelectionForeColor)、ワードラップ(WordWrap)と、多岐にわたった表示のカスタマイズ機能を提供している。

■特定の行や列をスクロール範囲から除外して固定表示にする

 DataGridViewコントロールでは、特定の行や列を固定表示するようにして、スクロールされる範囲から除外することもできる。また特定の行や列の間にすき間を入れて、区切りとして目立たせることも可能だ。

 次の画面は、前述のDataGridViewCellStyleクラスによりセル・スタイルをカスタマイズした例である。

上2行をスクロール範囲から除外して固定表示にした例
スクロールバーを4行目までスクロールしたところ。3行目が表示されていないこと、2行目とそれ以降の行との間に区切りとしてすき間があること、行やセルの色が所々カスタマイズされていることが分かる。

 また次の図は、列を固定した場合の例である。

左1列をスクロール範囲から除外して固定表示にした例
1列目とそれ以降の列との間に区切りとしてすき間がある。このため、例えばスクロールバーを右方向にスクロールして、2列目の位置が「その他のメールの説明」の列になるまでスクロールすると、その間にある「性別」の列から「その他メールの説明」の列までが表示されなくなる。また、それぞれの列やセルの色がカスタマイズされていることが分かる。

■表現力を増強させるプロパティ群

 DataGridViewコントロールのプロパティには、そのほかにも挙動に関して表現力や操作性を豊かにするプロパティが多数存在する。これらについては、以下の一覧表にまとめた。

プロパティ 概要説明
AllowUserToAddRows 行が追加できるかどうか
AllowUserToDeleteRows 行が削除できるかどうか
AllowUserToOrderColumns 列の順序が固定か、ユーザーによって変更できるか
AutoSizeColumnMode 列のサイズが固定か、自動で決定するか
AutoSizeRowMode 行のサイズが固定か、自動で決定するか
ColumnHeaderHeightSizeMode 列ヘッダのサイズが、ユーザーによって変更できるか、固定か、自動で決定するか
RowHeadersWidthSizeMode 行ヘッダのサイズが、ユーザーによって変更できるか、固定か、自動で決定するか
EditMode セルにフォーカスが移動したときに、すぐ入力モードになるか、キー入力で入力モードになるか、[F2]キーで入力モードになるか
MultiSelect 行、列、セルを複数選択させるかどうか
SelectionMode セル選択時に、行選択や列選択状態や、行ヘッダや列ヘッダ選択状態にする
DataGridViewコントロールの表現力・操作性を豊かにするためのプロパティ群

 このようにDataGridViewコントロールでは、従来のDataGridコントロールの弱点の1つであった、表現力が大幅に強化されている。ますますユーザー・フレンドリなグリッド表に生まれ変わったといえるだろう。

 以上、前編ではWindowsフォームに追加された新しいコントロールを説明し、今回はDataGridViewコントロールに焦点を当て、その多機能さとリッチになった表現力を中心に説明した。この記事が、高度な表現力を持ち、なおかつシンプルで使いやすいWindowsアプリケーションを作成するための手助けになれば幸いである。End of Article

 

 INDEX
  [特集]
  .NET Framework 2.0のWindowsフォーム新機能(前編)
  .NET 2.0で新登場するWindowsコントロール
    1.新しくなったWindowsフォーム用コントロールについて
    2.各コントロールについての概説
 
  .NET Framework 2.0のWindowsフォーム新機能(後編)
  新グリッド・コントロールの豊富な機能と高い表現力
    1..NET 2.0におけるデータソースとデータセットの作成
    2.DataGridViewコントロールと詳細コントロールの作成
  3.DataGridViewコントロールの拡張機能と表現力
 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH