Доступ к свойству WinCE ComboBox DroppedDown (.NET CF 2.0) - PullRequest
2 голосов
/ 18 мая 2010

Я реализую пользовательское поведение, подклассифицируя элементы управления формы, но мне не удается получить доступ к свойству DroppedDown ComboBox. Глядя в справку, он должен поддерживаться в CF.NET 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'

Как я могу получить доступ к собственности?

ТИА, Pablo

1 Ответ

1 голос
/ 18 мая 2010

Свойство DroppedDown отсутствует в compact-framework, но вы можете использовать что-то вроде этого:

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

...