设置组合框的下拉高度c# CF3.5
本文关键字:高度 CF3 组合 设置 | 更新日期: 2023-09-27 18:14:24
是否有办法在CF3.5中设置组合框的下拉高度?在CF中没有这样的属性,我似乎也无法在Design中这样做。任何帮助都是感激的,谢谢。
//------------------------------------------------------------- 更新 ---------------------------------------------------------//
[DllImport("coredll.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
[StructLayout(LayoutKind.Sequential)]
struct RECT
{
public int left, top, right, bottom;
}
[StructLayout(LayoutKind.Sequential)]
struct COMBOBOXINFO
{
public int cbSize;
public RECT rcItem;
public RECT rcButton;
public int stateButton;
public IntPtr hwndCombo;
public IntPtr hwndItem;
public IntPtr hwndList;
}
public static IntPtr IntPtrAlloc<T>(T param)
{
IntPtr retval = Marshal.AllocHGlobal(Marshal.SizeOf(param));
Marshal.StructureToPtr(param, retval, false);
return retval;
}
COMBOBOXINFO cbi = new COMBOBOXINFO();
IntPtr cbiPointer = IntPtrAlloc(cbi);
SendMessage(comboBox1.Handle, CB_GETCOMBOBOXINFO, IntPtr.Zero, cbi);
我自己没有尝试过,但我相信这是可以做到的。覆盖combobox的OnHandleCreated,使用pinvoke调用SendMessage与CB_GETCOMBOBOXINFO (0x0162),这将返回一个Comboboxinfo结构包含一个句柄到下拉列表控件,存储句柄到你的下拉列表。当你想更新下拉列表的高度时,调用SetWindowPos,使用你的下拉列表和你想要的高度的句柄。