c# - .NET CF 为组合框设置 'DroppedDown'

标签 c# combobox compact-framework

我想在移动程序 (.net cf 3.5) 上从我的程序打开一个组合框。

但是在compact-framework中不存在像cmbBox.DroppedDown这样的属性 Accesing WinCE ComboBox DroppedDown property (.NET CF 2.0) 但是我不想获取当前状态,而是要设置它。

我该如何执行此操作?

最佳答案

使用 CB_SHOWDROPDOWN = 0x014F 消息:

    public const int CB_GETDROPPEDSTATE = 0x0157;
    public static bool GetDroppedDown(ComboBox comboBox)
    {
        Message comboBoxDroppedMsg = Message.Create(comboBox.Handle, CB_GETDROPPEDSTATE, IntPtr.Zero, IntPtr.Zero);
        MessageWindow.SendMessage(ref comboBoxDroppedMsg);
        return comboBoxDroppedMsg.Result != IntPtr.Zero;
    }

    public const int CB_SHOWDROPDOWN = 0x014F;
    public static bool ToogleDropDown(ComboBox comboBox)
    {
        int expand = GetDroppedDown(comboBox) ? 0 : 1;
        int size = Marshal.SizeOf(new Int32());
        IntPtr pBool = Marshal.AllocHGlobal(size);
        Marshal.WriteInt32(pBool, 0, expand);  // last parameter 0 (FALSE), 1 (TRUE)
        Message comboBoxDroppedMsg = Message.Create(comboBox.Handle, CB_SHOWDROPDOWN, pBool, IntPtr.Zero);
        MessageWindow.SendMessage(ref comboBoxDroppedMsg);
        Marshal.FreeHGlobal(pBool);
        return comboBoxDroppedMsg.Result != IntPtr.Zero;
    }

关于c# - .NET CF 为组合框设置 'DroppedDown',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15431322/

相关文章:

c# - try catch block

java - 用选项填充组合框

java - 组合盒,自动填充。 java

c# - 在绑定(bind)到数据源的组合框上设置 SelectedItem

c++ - 无法编译项目,缺少 io.h 文件

c# - 如何在另一个类(class)中使用一个类(class)的公共(public) boolean ? C#

c# - 舍入到给定数字数组中最接近的数字

visual-studio - 为什么我的智能设备应用程序会创建 *.asmmeta.dll 文件?

c# - 您可以在 .net Compact Framework 中访问线程状态吗?

c# - 将 Oracle 数据库与 SQL Azure 同步