当前位置:  开发笔记 > 编程语言 > 正文

如何获得Listview的标题高度 - c#

如何解决《如何获得Listview的标题高度-c#》经验,为你挑选了2个好方法。

sombody可以告诉我如何获得列表视图的标题高度.

谢谢



1> Coincoin..:

这可能有点hacky但你可以这样做:

listView.Items[0].Bounds.Top

这仅在列表中只有一个项目时才有效.因此,您可能希望在首次创建列表时临时添加一个并保留高度值.

否则,您可以随时使用:

listView.TopItem.Bounds.Top

要随时进行测试,但您仍需要列表中的至少一个项目.



2> Phaedrus..:

以下是使用Win32 Interop调用获取listview标题高度的方法.

[Serializable, StructLayout(LayoutKind.Sequential)]
public struct RECT 
{
    public int Left;
    public int Top;
    public int Right;
    public int Bottom;
}

const long LVM_FIRST = 0x1000;
const long LVM_GETHEADER = (LVM_FIRST + 31);

[DllImport("user32.dll", EntryPoint="SendMessage")]
private static extern IntPtr SendMessage(IntPtr hwnd, long wMsg, long wParam, long lParam);

[DllImport("user32.dll")]
private static extern bool GetWindowRect(HandleRef hwnd, out RECT lpRect);

RECT rc = new RECT();
IntPtr hwnd = SendMessage(ListView1.Handle, LVM_GETHEADER, 0, 0);
if (hwnd != null) 
{
    if (GetWindowRect(new HandleRef(null, hwnd), out rc)) 
    {
        int headerHeight = rc.Bottom - rc.Top;
    }
}

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有