Google
 
Web itpro-blogger.blogspot.com
月曜日, 9月 15, 2008

[VB2005]DataGridの行の高さを固定にする

▼質問
DataGridの高さを固定にしたいんだ。どうやったらできるか教えてくれ!

▼回答
DataGridの高さを制御するには、Layoutイベントで高さを制御すればできるんだ。

行を追加する後に、現在値の高さをPreferredRowHeightプロパティに設定する。

LayoutイベントでSetRowHeight関数を呼んでやることで制御できる。

PreferredRowHeightプロパティに現在値(前回値)を設定する。

If (Me.DataGrid1.VisibleRowCount > 0) Then
Me.DataGrid1.PreferredRowHeight = _
GetRowHeight(i, Me.DataGrid1.PreferredRowHeight, Me.DataGrid1)
End If

行の高さを取得・設定する関数

Private Sub SetRowHeight()
'全行数分ループする
For i As Integer = 0 To Me.DataGrid1.VisibleRowCount - 1
If (Me.DataGrid1.PreferredRowHeight <> _
GetRowHeight(i, Me.DataGrid1.PreferredRowHeight, Me.DataGrid1)) Then
SetRowHeight(i, Me.DataGrid1.PreferredRowHeight, Me.DataGrid1)
End If
Next i
End Sub

Public Function GetRowHeight(ByVal Row As Integer, ByVal height As Integer, ByVal oDG As DataGrid) As Integer
Dim p As Reflection.PropertyInfo = _
GetType(DataGrid).GetProperty("DataGridRows", _
Reflection.BindingFlags.FlattenHierarchy Or _
Reflection.BindingFlags.IgnoreCase Or _
Reflection.BindingFlags.Instance Or _
Reflection.BindingFlags.NonPublic Or _
Reflection.BindingFlags.Public Or _
Reflection.BindingFlags.Instance Or _
Reflection.BindingFlags.Static)

Dim obj As Object = _
CType(p.GetValue(oDG, _
Reflection.BindingFlags.Instance Or Reflection.BindingFlags.Static Or _
Reflection.BindingFlags.GetProperty Or Reflection.BindingFlags.Public Or _
Reflection.BindingFlags.SuppressChangeType, _
Nothing, Nothing, Nothing), Object)

If (Row < propertyinfo =" _" object =" _" type =" _" height =" height">



■参考サイト
VBレスキュー(花ちゃん)のVB.NET・VB2005用掲示板
http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?no=7871&reno=7851&oya=7850&mode=msgview&page=0
DataGridの行の高さを文字列にあわせて設定する: DOBON.NETプログラミング掲示板過去ログ
http://dobon.net/vb/bbs/log3-27/15680.html






Comments: コメントを投稿

<< Home

This page is powered by Blogger. Isn't yours?