C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: DataGridの行の高さの自動調整について


(過去ログ 13 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■3970 / inTopicNo.1)  DataGridの行の高さの自動調整について
  
□投稿者/ masa (11回)-(2007/05/30(Wed) 14:29:30)

分類:[VB.NET (Windows)] 

先日、御教授頂きまして データグリッドの行毎の高さをそこに入っているテキストに依って調整するコードを作ってみました なんとか行の高さの調整はできるようになったのですが 行の高さを大きくする事でデータグリッド全体の高さが高くなりスクロールを一杯まで下げても 下のほうに表示されていたデータが表示できなくなってしまいました
スクロールバーの値を調整できれば いけるのかな? と思うのですが 方法がわかりません

よろしければ御教授いただけないでしょうか?

コードはこんな風に書きました

Private Sub RowSet(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim tb As DataTable = DataSet1.Table

Dim cou As Integer = tb.Rows.Count
For i As Integer = 0 To cou - 2
SetRowHeight3(DataGrid1, DataGridTextBoxColumn2, i)
Next
End Sub

Public Sub SetRowHeight3(ByVal grid As DataGrid, ByVal Colum As DataGridTextBoxColumn, ByVal RowIndex As Integer)
'架空のテキストボックスを作る
Dim txBox As New TextBox
txBox.Text = grid(RowIndex, grid.TableStyles(0).GridColumnStyles.IndexOf(Colum))

'架空のテキストボックスに入れたテキストの行毎の行数を計算し行幅を算出
Dim rr As Integer
Dim txtArray() As String
txtArray = txBox.Lines
Dim gg As Integer = 0
Dim ggg As Integer
For rr = 0 To txtArray.GetUpperBound(0)
Dim tx As String = txtArray(rr)
Dim le As Integer = Len(tx)
Dim koma As Integer = Colum.Width / 11 - 1

Dim gyo As Integer
If le > koma Then
gyo = le / koma
If le - (gyo * koma) > 0 Then
gyo += 1
End If
Else
gyo = 1
End If
ggg += gyo
Next
txBox.Dispose()
Dim FontHi As Integer = DataGrid1.Font.Height
Dim Hi As Integer = ggg * FontHi + 5

'行の高さを設定する
Dim d As DataGrid
d = grid
Dim p As PropertyInfo = d.GetType.GetProperty("DataGridRows", BindingFlags.FlattenHierarchy Or BindingFlags.IgnoreCase Or BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.Static)
Dim r As Object() = p.GetValue(d, BindingFlags.Instance Or BindingFlags.Static Or BindingFlags.GetProperty Or BindingFlags.Public Or BindingFlags.SuppressChangeType, Nothing, Nothing, Nothing)
If RowIndex < r.Length Then
r(RowIndex).Height = Hi
Me.Invalidate()
Else
Throw New Exception("Row index outside of boundaries.")
End If
End Sub
引用返信 編集キー/
■4004 / inTopicNo.2)  Re[1]: DataGridの行の高さの自動調整について
□投稿者/ masa (12回)-(2007/05/31(Thu) 14:33:58)
No3970 (masa さん) に返信

不適切な方法かもしれませんが
DataGridTableStyle の PreferredRowHeight を大きめに設定しておく事でなんとか解決できました

ありがとうございました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -