CodeZine(コードジン)

特集ページ一覧

DataGridViewのカスタム列タイプの作成

DataGridViewのセル内にグラフを描画する

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/10/04 14:00

ダウンロード サンプルソース (56.0 KB)

DataGridViewコントロールのカスタム列タイプ作成は以前よりずっと簡単になっています。

目次

はじめに

 私のところには、プログラミングに関するさまざまな質問が電子メールで送られてきます。できる限りすべての問題を解決するように努力していますが、ランダムな質問の多くはパブリックニュースグループの方へ回しています。それでも、自分で調べずにはいられない興味深い質問もあります。先日も、友人から次のようなメールが届きました。

 「Webページに表形式で値を表示しているんだ。そのうちの1つの列に、表中の値に基づくシンプルな小さい横棒グラフを表示している。この横棒グラフは単色のビットマップで、グラフの長さはフィールドの値を示している。このグラフの横にはフィールド値も表示している。単純な表にこういう視覚情報を加えるのはすごく効果的だと思うんだ。これをDataGridViewコントロールで行うにはどうすればいいかな?」

 私の予想に反して、少し調べてみると、DataGridViewに新しい列タイプを作成すればこれを実現できることがわかりました。Visual Studio 2003のGridViewコントロールで非常に苦労した経験から、初めは不安でした。ところが、.NETの世界ではよくあるように、以前は難しかったこの処理も今は簡単に実現できることがわかりました。私はすぐにサンプルを作成して友人へ送りました。今回は、それにもう少し手を加えたものを紹介します。

 この記事では、DataGridViewコントロールのカスタム列タイプの作成方法を説明するために、横棒グラフを表示するセルタイプのサンプルを見ていきます。このサンプルの作成方法を習得すれば、今度はもっと複雑な列タイプも作成できるようになるでしょう。

 以降では、図1のフォームのようなサンプルを作成します。このフォームには、SQL Server 2000 Northwindサンプルデータベースのデータを使用していますが、他のテーブルを使って作ってみることもできます。ただ、整数列が含まれるデータソースを使用してください。また、横棒グラフの長さは、セルの境界内に収まるように調整されます(個々の長さは列の最大値に基づいて決定します)。列幅を広げると、横棒グラフの長さも列幅に合わせて長くなります。図2は、このサンプルの列の動作を示すため、同じ列を3種類の列幅で表示したものです。

図1 完成したフォーム。列の1つに、単なる数字の代わりに横棒グラフが表示されている
図1 完成したフォーム。列の1つに、単なる数字の代わりに横棒グラフが表示されている
図2 同じ列を3種類の列幅で表示した様子
図2 同じ列を3種類の列幅で表示した様子

 DataGridViewのカスタム列タイプ作成の基本概念は単純です。DataGridViewCellクラスを継承する独自のセルクラス(またはDataGridViewCellクラスを継承するクラスを継承するクラス)を作成します。このセルクラスでは、基本クラスの多数のプロテクトメンバをオーバーライドできます。たとえば、この記事のサンプルのようにセルの内容の描画方法を変更する場合は、クラスのPaintメソッドをオーバーライドします。

 セルクラスを作成したら、次はDataGridViewColumnクラスを継承するクラスを作成します。このクラスでも多くのメンバをオーバーライドできますが、通常、その必要はありません。必要なのは、このクラスのコンストラクタ内でCellTemplateプロパティを設定することだけです。最後に、DataGridViewの設定で、目的の列に新しい列タイプを指定すれば完了です(かつては、GridViewの中にComboBoxコントロールを表示する列を作成するには何百行ものコードを書かなければなりませんでした。辛抱強く待った甲斐があるというものです)。

編集部注
 本稿は、『CoDe Magazine』2007年7月/8月号に掲載された記事を、承諾を得て転載したものです。

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

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

著者プロフィール

  • Ken Getz(Ken Getz)

    MCW Technologies社上級顧問。プログラミング、執筆、教育に携わる。専門はVisual Studio .NETおよびVisual Basicでのツール/アプリケーション開発。『CoDe Magazine』誌の好評コラム「.Finalize()」を担当。共著にベストセラーとなった『Acce...

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

あなたにオススメ

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