スマートデバイスアプリケーションでのDataGridの行の高さを変更するには?

解決


ウィング  2008-07-31 10:39:47  No: 145026

VB.net 2003を使用して、Windows CE用のスマートデバイスアプリケーションを開発しています。

データの一覧を表示するためにDataGridを使用しています。
PDA端末のため指などで選択がやりやすいように、
行の高さを大きくしなければいけないのですが、
スマートデバイスアプリケーション用のDataGridには、
「PreferredRowHeight」プロパティがありません。

何か行の高さを変更する方法はあるのでしょうか?

よろしくお願いいたします。


特攻隊長まるるう  2008-08-01 03:57:47  No: 145027

とりあえずフォントを変更すれば、全てが
フォントのサイズに修正されそうな感じ。


ウィング  2008-08-02 00:13:52  No: 145028

ご回答ありがとうございます。

フォントを変更すれば、確かに高さは変わるのですが、
フォントが大きくなることで横幅も増えてしまい、
表示領域が狭まってしまうのです・・・。

ほかに方法はないものでしょうか?

よろしくお願いいたします。


ウィング  2008-08-29 07:51:36  No: 145029

方法がないみたいですので、
解決として締めることにします。

また何かあれば、よろしくお願いします。

ありがとうございました。


ご〜〜  2008-09-02 01:59:44  No: 145030

解決済みにチェックがついているようですが

.NET2005でしか試してません

海外サイトで、C#ですが同様の事例がありました
Programmatically setting DataGrid row height
http://community.opennetcf.com/forums/p/307/407.aspx

VB.NETに直すとこんな感じです

    '***********************************************************************************
    '*  データグリッドのすべてのROWの高さを設定
    '*      引数    
    '*          dg          データグリッド
    '*          cy          指定の高さ
    '***********************************************************************************
    Public Sub SetGridDefaultRowHignt(ByVal dg As DataGrid, ByVal cy As Integer)
        Dim fi As FieldInfo = Nothing
        Dim obj() As Object = Nothing

        fi = dg.GetType().GetField("m_cyRow", _
                                   BindingFlags.NonPublic Or _
                                   BindingFlags.Static Or _
                                   BindingFlags.Instance)
        fi.SetValue(dg, cy)
        dg.GetType().GetMethod("_DataRebind", _
                                   BindingFlags.NonPublic Or _
                                   BindingFlags.Static Or _
                                   BindingFlags.Instance).Invoke(dg, obj)

        dg.Invalidate()

    End Sub

    '***********************************************************************************
    '*  データグリッドの指定ROWの高さを設定
    '*      引数    
    '*          dg          データグリッド
    '*          nRow        高さを変更するROW
    '*          cy          指定の高さ
    '***********************************************************************************
    Public Sub SetGridRowHignt(ByVal dg As DataGrid, ByVal nRow As Integer, ByVal cy As Integer)
        Dim aryRows As ArrayList
        aryRows = New ArrayList
        Dim objRow As Object
        objRow = New Object

        aryRows = CType(dg.GetType().GetField("m_rlrow", _
                                   BindingFlags.NonPublic Or _
                                   BindingFlags.Static Or _
                                   BindingFlags.Instance).GetValue(dg), ArrayList)
        objRow = aryRows(nRow)

        objRow.GetType().GetField("m_cy", _
                                   BindingFlags.NonPublic Or _
                                   BindingFlags.Static Or _
                                   BindingFlags.Instance).SetValue(objRow, cy)
        dg.Invalidate()

    End Sub

とかでどうでしょう?


ご〜〜  2008-09-02 02:05:12  No: 145031

追記です

使用時には、
Imports System.Reflection

を追加してください


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加