2011-12-14 2 views
0

Я внедрил поле со списком, в котором установлен флажок (приложение Windows Form). Это прекрасно работает.Расширить поле со списком в Visual Studio

Используется: C#, Visual Studio 2010.

Проблема: Проблема с моим списком, что выпадающий закрывается после каждого выбора.

Вопрос: Возможно ли это, что выпадение остается фиксированным, пока я не выберу несколько элементов?

Просто хотел узнать, есть ли способ сделать это.

спасибо.

+1

WinForms, WPF, или другие? Добавьте тег. –

+1

Как вы представляете, как пользователь сообщает, что они сделаны, выбрав? Эта идея нарушает несколько принятых пользовательских соглашений в поле со списком - и будет лучше обслуживаться с помощью специального решения (например, для отображения CheckListBox в диалоговом окне или в небольшой форме). –

+0

@JohnArlen Для примера * look-and-feel * вы можете посмотреть ** Проводник Windows ** или ** Excel **. –

ответ

0

Я думаю, что расширенный набор инструментов Wpf CheckComboBox - это именно то, что вы пытаетесь сделать. См. Следующую ссылку для получения дополнительной информации.

Вы можете добавить этот элемент управления WPF в вашем WinForm

http://wpftoolkit.codeplex.com/wikipage?title=CheckComboBox&referringTitle=Home

+0

есть. Но ссылка указывает, что она еще должна быть добавлена ​​в набор инструментов. – JJunior

0

Предполагая, что вы работаете с Winforms:

public class CheckComboBox : ComboBox 
{ 
    Timer _timer = new Timer(); 

    public CheckComboBox() 
    { 
     _timer.Interval = 1; 
     _timer.Tick += timer_Tick;  
    } 
    protected override void OnDropDownClosed(EventArgs e) 
    { 
     base.OnDropDownClosed(e); 
     if (checkbox has been clicked) { 
      _timer.Start(); 
     } 
    } 

    void timer_Tick(object sender, EventArgs e) 
    { 
     _timer.Stop(); 
     DroppedDown = true; // Reopens dropdown. 
    } 
} 
+1

Это было бы странно, так как меню закроется, а затем снова откроется, он должен наследовать элемент управления и изменить поведение по умолчанию, что происходит при выборе. –

0

Вы можете остановить комбинированное окно от закрытия, если вы предотвратить ваши флажки от фокусировки при нажатии.

Для этого необходимо вывести из класса CheckBox и и переопределить флаги управления в конструкторе:

SetStyle(ControlStyles.Selectable, false); 
+0

Это не помогло, так как я не вижу фокуса и создаю/рисую флажок в своем коде. – JJunior