2010-05-18 27 views
2

我正在实现自定义行为子分类表单控件,但我无法设法访问组合框的DroppedDown属性。在帮助寻找,它应该在CF.NET 2.0支持:访问WinCE组合框DroppedDown属性(.NET CF 2.0)

using System; 

using System.Collections.Generic; 
using System.ComponentModel; 
using System.Drawing; 
using System.Data; 
using System.Text; 
using System.Windows.Forms; 

namespace xCustomControls 
{ 
    public partial class xComboBox : System.Windows.Forms.ComboBox 
    { 
     private ComboBox comboBox1; 

     public xComboBox() 
     { 
      InitializeComponent(); 
      this.KeyDown += new KeyEventHandler(this.KeyDownHandler); 
     } 

     private void KeyDownHandler(object sender, KeyEventArgs e) 
     { 
       // DroppedDown doesn't appear in the IntelliSense of ComboBox. 
       // or this.comboBox1. 
      if (((ComboBox)sender).DroppedDown)  // fail! 
       return; 

      switch (e.KeyData) 
      { 
       case Keys.Up: 
       case Keys.Enter: 
       case Keys.Down: 
        e.Handled = true; 
        this.Parent.SelectNextControl((Control)sender, e.KeyData != Keys.Up, true, true, true); 

... 

失败“System.Windows.Forms.ComboBox”不包含“DroppedDown”,没有扩展方法的定义“DroppedDown”接受类型'System.Windows.Forms.ComboBox'的第一个参数可能被发现

如何访问该属性?

TIA, 巴勃罗

回答

1

DroppedDown属性不是在紧凑的框架,但你可以使用一些这样的事:

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; 
} 

来自http://msdn.microsoft.com/en-us/netframework/bb735847.aspx

+0

就像一个魅力, 谢谢! 明天我会尝试着明天这么做,所以今天SO说“我的投票是锁定的”:( – PabloG 2010-05-18 15:12:37

+0

@PabloG,你好,我没有。不在紧凑框架中。 – 2010-05-18 20:27:53