设置组合框的下拉高度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);

设置组合框的下拉高度c# CF3.5

我自己没有尝试过,但我相信这是可以做到的。覆盖combobox的OnHandleCreated,使用pinvoke调用SendMessage与CB_GETCOMBOBOXINFO (0x0162),这将返回一个Comboboxinfo结构包含一个句柄到下拉列表控件,存储句柄到你的下拉列表。当你想更新下拉列表的高度时,调用SetWindowPos,使用你的下拉列表和你想要的高度的句柄。