- 題名: DataGridの行の高さを文字列にあわせて設定する
- 日時: 2006/05/09 17:03:31
- ID: 15680
- この記事の返信元:
- (なし)
- この記事への返信:
- [15685] Re[1]: DataGridの行の高さを文字列にあわせて設定する2006/05/09 19:37:54
- ツリーを表示
お〜、すみません。リンク先のコードは、DataGridを継承したクラスで使うように
組まれてました。invalidateやMeがある段階で気付くべきでした。大変すみません。
ごめんなさい。m(_ _)m
で、それを継承したクラスではなく、普通にDataGridをターゲットにして行の高さを
変更するパターンを以下に示します。すみません、VB.NETは詳しくないので、
C#に変換して書いてしまいました。
public void SetRowHeight(DataGrid dgt, int Row, int height)
{
try
{
PropertyInfo p = typeof(DataGrid).GetProperty("DataGridRows",
BindingFlags.FlattenHierarchy | BindingFlags.IgnoreCase |
BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public |
BindingFlags.Instance | BindingFlags.Static);
object[] r = (object[])p.GetValue(dgt, BindingFlags.Instance | BindingFlags.Static |
BindingFlags.GetProperty | BindingFlags.Public |
BindingFlags.SuppressChangeType, null, null, null);
if (Row < r.Length)
{
Type drt = dgt.GetType().Assembly.GetType("System.Windows.Forms.DataGridRow");
drt.GetProperty("Height").SetValue(r[Row], height, null);
}
else
{
throw new Exception("Row index outside of boundaries.");
}
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}
以下、コンバートツールによってVB.NETにコンバートしたコードです。
Public Sub SetRowHeight(dgt As DataGrid, Row As Integer, height As Integer)
Try
Dim p As PropertyInfo
= GetType(DataGrid).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()
= CType(p.GetValue(dgt, BindingFlags.Instance Or BindingFlags.Static Or
BindingFlags.GetProperty Or BindingFlags.Public Or BindingFlags.SuppressChangeType,
Nothing, Nothing, Nothing), Object())
If Row < r.Length Then
Dim drt As Type = dgt.GetType().Assembly.GetType("System.Windows.Forms.DataGridRow")
drt.GetProperty("Height").SetValue(r(Row), height, Nothing)
Else
Throw New Exception("Row index outside of boundaries.")
End If
Catch e As Exception
MessageBox.Show(e.Message)
End Try
End Sub 'SetRowHeight
SetValueとか使わずに、VB.NETでは元のままの表記で動くかもしれませんね。
いずれにしても上記を参考にしてトライしてみてください。
分類:[.NET]
DataGridで文字列にあわせて行毎に高さを変更する方法は
ないでしょうか?
宜しくご教授願います。