Попробуйте использовать это так:
const channel = message.guild.channels.find(channel => channel.name === name)
Это могло бы быть небольшим hacky, но можно сделать:
listView.Items[0].Bounds.Top
Это будет только работать, если будет только один объект в списке. Таким образом, Вы могли бы хотеть временно добавить тот, когда Вы сначала создаете список и сохраняете значение высоты.
Еще, можно всегда использовать:
listView.TopItem.Bounds.Top
Для создания теста в любой момент но Вам все еще нужен по крайней мере один объект в списке.
Вот то, как получить 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;
}
}