- 題名: DataGridの自動幅調節について
- 日時: 2006/04/11 19:36:03
- ID: 15288
- この記事の返信元:
- (なし)
- この記事への返信:
- [15295] Re[1]: DataGridの自動幅調節について2006/04/12 3:50:22
- ツリーを表示
> grid.DataSourceはDataTableですか?もしDataSetなどであれば、対象となるDataTableを取得してdtに入れてください。 DataSetです。 初めて2週間のためよく解っておらず、 質問も曖昧ですみません。 DataSetのDataTableかな?と思い実行してみましたが、 エラーではじかれてしまった為質問しました。 Sharedキーワードをはずすことですんなり解決しました。 ありがとうございました。
分類:[.NET]
下記を参考にさせていただき、DataGridの自動幅調節を 行いたいのですが、データテーブルを使わない方法でアクセスしているので Dim dt As DataTable = CType(grid.DataSource, DataTable)の部分で エラーとなってしまいます。 その場合は、なにを指定すればよいのでしょうか? よろしくお願いします。 'DataGridのGraphicsを取得 Dim g As Graphics = Graphics.FromHwnd(grid.Handle) 'すべてのセルを調べて、一番広い幅を取得 Dim sf As New StringFormat(StringFormat.GenericTypographic) Dim dt As DataTable = CType(grid.DataSource, DataTable) Dim rowsCount As Integer = dt.Rows.Count Dim maxWidth As Single = 0 Dim i As Integer For i = 0 To rowsCount - 1 Dim [text] As String = grid(i, column).ToString() maxWidth = Math.Max(g.MeasureString( _ [text], grid.Font, grid.Width, sf).Width, maxWidth) Next i 'ヘッダの幅も考慮 Dim cs As DataGridColumnStyle = _ grid.TableStyles(dt.TableName).GridColumnStyles(column) maxWidth = Math.Max(g.MeasureString( _ cs.HeaderText, grid.Font, grid.Width, sf).Width, maxWidth) '破棄 g.Dispose() '幅の変更 cs.Width = CInt(maxWidth) + 8