.NET ListView のすべての行のパディング (または行の高さ) を変更する方法はないようです。誰もエレガントなハックアラウンドを持っていますか?
Brian Gillespie
質問する
6362 次
2 に答える
9
この投稿がかなり古いことは承知していますが、最適なオプションが見つからない場合は、LVM_SETICONSPACING の利用に関するブログ投稿を参考にしてください。
私のブログによると、
最初に、以下を追加する必要があります。
using System.Runtime.InteropServices;
次に、SendMessage を利用して ListView パラメーターを変更できるように、DLL をインポートする必要があります。
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
それが完了したら、次の 2 つの関数を作成します。
public int MakeLong(short lowPart, short highPart)
{
return (int)(((ushort)lowPart) | (uint)(highPart << 16));
}
public void ListViewItem_SetSpacing(ListView listview, short leftPadding, short topPadding)
{
const int LVM_FIRST = 0x1000;
const int LVM_SETICONSPACING = LVM_FIRST + 53;
SendMessage(listview.Handle, LVM_SETICONSPACING, IntPtr.Zero, (IntPtr)MakeLong(leftPadding, topPadding));
}
次に、関数を使用するには、ListView を渡して値を設定します。この例では、64 ピクセルが画像の幅、32 ピクセルが水平方向の間隔/パディング、100 ピクセルが画像の高さ、16 ピクセルが垂直方向の間隔/パディングであり、両方のパラメーターに最低 4 ピクセルが必要です。
ListViewItem_SetSpacing(this.listView1, 64 + 32, 100 + 16);
于 2012-10-25T15:51:38.383 に答える
5
回避策は、必要なアイテムの高さの ImageList を使用することです。空白の画像を背景色で塗りつぶすだけです。横方向にあまりスペースを取らないように、画像を 1 ワイドにすることもできます。
于 2008-09-12T00:03:39.907 に答える