Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 > Windows.Forms.DataGrid >
列の幅を指定する
ここでは、プログラムからデータグリッドの列幅を設定・変更する方法を示します。プロパティウィンドウを使って列幅を指定する例は 図解 基礎解説 DataGridに明示的に列を追加する をご覧下さい。
1.単純な例
以下の例では[人物]テーブルの[備考]列の幅を200にする。
DataGrid1.TableStyles("人物").GridColumnStyles("備考").Width = 200
メモ: テーブル名[人物]も列名[備考]もあらかじめデータグリッドのMappingNameとして登録しておく必要があります。MappingNameをプロパティウィンドウから設定する方法は図解 基礎解説 DataGridに明示的に列を追加する をご覧下さい。
2.参考:データベースからデータを取得して列幅を指定する完全な例
以下の例では、SQL Server付属のサンプルデータベース pubs から[authors]テーブルの内容を読み込んでDaraGridに表示する。
SQL Server以外のデータベースでもデータ取得部分を変更すれば同様の操作が可能。
'●データテーブルの作成 'データベースにアクセスしてデータを取得する Dim Cn As SqlClient.SqlConnection
'データベースへの接続方法は環境により異なります。以下の行を適当に書き換えてください。
Cn = New SqlClient.SqlConnection("Server=(local);User ID=sa;Password=;Initial Catalog=pubs")Dim sqlSelect As New SqlClient.SqlCommand("SELECT * FROM authors", Cn)
Dim Adapter As New SqlClient.SqlDataAdapter(sqlSelect)
Dim Table As New DataTable("authors")Adapter.Fill(Table)
'●データグリッド側の受け皿を作成
DataGrid1.TableStyles.Add(New DataGridTableStyle)
DataGrid1.TableStyles(0).MappingName = Table.TableNameDim Column1 As New DataGridTextBoxColumn
Dim Column2 As New DataGridTextBoxColumn
Dim Column3 As New DataGridTextBoxColumnColumn1.MappingName = "au_id"
Column2.MappingName = "au_lname"
Column3.MappingName = "address"Column1.Width = 100 '1列目の幅を設定
Column2.Width = 100 '2列目の幅を設定
Column3.Width = 150 '3列目の幅を設定DataGrid1.TableStyles(0).GridColumnStyles.Add(Column1)
DataGrid1.TableStyles(0).GridColumnStyles.Add(Column2)
DataGrid1.TableStyles(0).GridColumnStyles.Add(Column3)'●データテーブルをデータグリッドにセット
DataGrid1.DataSource = Table
メモ:この例 で、後から列幅を変更するには次のようにします。
DataGrid1.TableStyles("authors").GridColumnStyles("Address").Width = 200
メモ:多くのプログラマはプロパティウィンドウを使ってマッピングや列幅を設定し、プログラムを使ってデータを取得します。この例のようにすべてをプログラムで行うのは柔軟性が重視される場合です。
3.参考:データベースとは無関係にデータをセットして列幅を指定する完全な例
Dim Table As New DataTable("人物")
Dim Row As DataRow'●データテーブルの作成
'▼テーブルの構造を定義Table.Columns.Add("名前", GetType(String))
Table.Columns.Add("年齢", GetType(Integer))
Table.Columns.Add("備考", GetType(String))'▼テーブルのデータを作成
Row = Table.NewRow
Row("名前") = "徳川家康"
Row("年齢") = 20
Row("備考") = "江戸幕府を開いた。"
Table.Rows.Add(Row)Row = Table.NewRow
Row("名前") = "豊臣秀吉"
Row("年齢") = 30
Row("備考") = "朝鮮に出兵した。"Table.Rows.Add(Row)
Row = Table.NewRow
Row("名前") = "織田信長"
Row("年齢") = 40
Row("備考") = "本能寺の変で命を落とした。"Table.Rows.Add(Row)
'●データグリッド側の受け皿を作成
DataGrid1.TableStyles.Add(New DataGridTableStyle)
DataGrid1.TableStyles(0).MappingName = Table.TableNameDim Column1 As New DataGridTextBoxColumn
Dim Column2 As New DataGridTextBoxColumn
Dim Column3 As New DataGridTextBoxColumnColumn1.MappingName = "名前"
Column2.MappingName = "年齢"
Column3.MappingName = "備考"Column1.Width = 100 '1列目の幅を設定
Column2.Width = 100 '2列目の幅を設定
Column3.Width = 150 '3列目の幅を設定DataGrid1.TableStyles(0).GridColumnStyles.Add(Column1)
DataGrid1.TableStyles(0).GridColumnStyles.Add(Column2)
DataGrid1.TableStyles(0).GridColumnStyles.Add(Column3)'●データテーブルをデータグリッドにセット
DataGrid1.DataSource = Table
メモ:この例で、後から列幅を変更するには次のようにします。
DataGrid1.TableStyles("人物").GridColumnStyles("年齢").Width = 50