Как я получаю высоту заголовка Listview - c#

Попробуйте использовать это так:

const channel = message.guild.channels.find(channel => channel.name === name)
12
задан Robert Wagner 11 February 2009 в 21:47
поделиться

2 ответа

Это могло бы быть небольшим hacky, но можно сделать:

listView.Items[0].Bounds.Top

Это будет только работать, если будет только один объект в списке. Таким образом, Вы могли бы хотеть временно добавить тот, когда Вы сначала создаете список и сохраняете значение высоты.

Еще, можно всегда использовать:

listView.TopItem.Bounds.Top

Для создания теста в любой момент но Вам все еще нужен по крайней мере один объект в списке.

13
ответ дан 2 December 2019 в 05:56
поделиться

Вот то, как получить listview высоту заголовка с помощью Win32 вызовы Interop.

[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;
    }
}
11
ответ дан 2 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: