| |
|
.NET TIPS
DataGridコントロールで列の幅を指定するには?
デジタルアドバンテージ
2003/12/12 |
 |
|
DataGridコントロールでデータを表示するとき、文字列が列からはみ出してしまい、文字列の一部分しか見えていなかったり、余白が空きすぎて見栄えが良くなかったりする場合がある。
 |
| DataGridコントロールによるデータの一覧表示 |
| DataGridコントロールで、文字列が列からはみ出したり、列に余白があったりするので、データが見づらい場合がある。 |
| |
 |
文字列が列からはみ出している。本来なら「パイナップル」と表示されるところが、列幅が足りないので、「パイナッ」(一部分)までしか表示されていない。 |
| |
 |
余白が空きすぎている。次の列までの余白が空きすぎているので、見栄えが悪い。 |
|
このような場合、DataGridコントロールにあらかじめ最適な列幅を指定しておくとよい。
 |
| 列幅を指定したDataGridコントロール |
| 文字列が列内に適切に収まっていおり、無駄な余白もないので、データが見やすい。 |
| |
 |
列幅が大きくなっているので、文字列が完全に列内に収まっている。 |
| |
 |
列幅が小さくなっているので、無駄な余白がない。 |
|
上の図のように、DataGridコントロールで、列の幅を指定するには、DataGridTextBoxColumnクラス(System.Windows.Forms名前空間)のWidthプロパティにピクセル単位で幅を設定する。
なお、この列幅をDataGridコントロールに適用するには、まず、列の幅を指定したDataGridTextBoxColumnオブジェクトを、DataGridTableStyleクラスのオブジェクトのGridColumnStylesプロパティにAddメソッドを使って追加する。このGridColumnStylesプロパティは、DataGridコントロールの列のスタイルを指定するためのコレクションである。次に、そのDataGridTableStyleオブジェクトを、DataGridコントロールのテーブル・スタイルのコレクションであるTableStylesプロパティにAddメソッドにより追加する。次に具体的なコードを示す。
private void Form1_Load(object sender, System.EventArgs e)
{
// テーブルを作成
DataSet dataSet1 = new DataSet("商品マスター");
DataTable dataTable1 = dataSet1.Tables.Add("商品テーブル");
DataColumn dataClumn1 = dataTable1.Columns.Add("ID", typeof(int));
DataColumn dataClumn2 = dataTable1.Columns.Add("商品");
DataColumn dataClumn3 = dataTable1.Columns.Add("個数", typeof(int));
// テーブルのスタイルを作成
DataGridTableStyle dgTableStyle = new DataGridTableStyle();
dgTableStyle.MappingName = dataTable1.TableName;
dataGrid1.TableStyles.Add(dgTableStyle);
// テーブルの列のスタイルを作成
DataGridTextBoxColumn dgColumnStyle1 = new DataGridTextBoxColumn();
DataGridTextBoxColumn dgColumnStyle2 = new DataGridTextBoxColumn();
DataGridTextBoxColumn dgColumnStyle3 = new DataGridTextBoxColumn();
dgColumnStyle1.MappingName = dataClumn1.ColumnName;
dgColumnStyle2.MappingName = dataClumn2.ColumnName;
dgColumnStyle3.MappingName = dataClumn3.ColumnName;
// *** 列の幅を決定 ***
dgColumnStyle1.Width = 30;
dgColumnStyle2.Width = 100;
dgColumnStyle3.Width = 50;
// 列のスタイルをテーブル・スタイルに登録
dgTableStyle.GridColumnStyles.Add(dgColumnStyle1);
dgTableStyle.GridColumnStyles.Add(dgColumnStyle2);
dgTableStyle.GridColumnStyles.Add(dgColumnStyle3);
// テーブルにデータを追加
dataTable1.Rows.Add(new Object[] {1, "みかん", 100});
dataTable1.Rows.Add(new Object[] {2, "パイナップル", 300});
dataTable1.Rows.Add(new Object[] {3, "バナナ", 120});
dataTable1.Rows.Add(new Object[] {4, "すいか", 280});
dataTable1.Rows.Add(new Object[] {5, "いちご", 200});
dataTable1.Rows.Add(new Object[] {6, "メロン", 150});
// データグリッドにテーブルを表示する
dataGrid1.SetDataBinding(dataSet1, dataTable1.TableName);
}
|
|
| DataGridコントロールの列(Column)の幅を指定するC#のプログラム |
|
|
なお今回のTIPSは、データ内の文字列の長さが予測可能な場合には有効だが、文字列の長さが不定な場合はあらかじめ幅を決定できないので、あまり有効ではない。そのような場合、Graphicsクラス(System.Drawing名前空間)のMeasureStringメソッドなどを使って、データ内の文字列の最大幅を取得し、列幅を動的に決定する必要があるだろう。
カテゴリ:Windowsフォーム 処理対象:DataGridコントロール
使用ライブラリ:DataGridコントロール
使用ライブラリ:DataGridTextBoxColumnクラス(System.Windows.Forms名前空間)
使用ライブラリ:DataGridTableStyleクラス(System.Windows.Forms名前空間)
使用ライブラリ:Graphicsクラス(System.Drawing名前空間)
|
|
|
generated by
|
|
TechTargetジャパン
キャリアアップ

**先週の人気講座ランキング**
〜 Android編 〜