我想在移动程序 (.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/