Как я могу сделать комбобокс открытым после выбора элемента? - PullRequest
5 голосов
/ 13 февраля 2011

Как сделать, чтобы выпадающий список оставался открытым после выбора элемента в C #?

Я хочу сделать это, потому что на самом деле это комбинированный список с контрольным списком, поэтому я могу выбрать несколько элементов.

Ответы [ 5 ]

5 голосов
/ 13 февраля 2011

Вместо этого используйте ListBox , поскольку ComboBox выполняет такое поведение в соответствии с его базовой конструкцией.

ListBox дает аналогичный эффект (следовательно, он все еще открыт) и позволяет использовать нескольковыбор.

4 голосов
/ 13 февраля 2011

Если вы все еще хотите разрешить пользователю писать собственную опцию, вы все равно можете использовать DropBox, просто установите свойство DropDownStyle на simple.Вы получите нечто похожее с ListBox, но с TextBox сверху, где пользователь может что-то написать.

4 голосов
/ 13 февраля 2011

Используйте ListBox вместо ComboBox.То, что вы хотите сделать (держать ComboBox открытым даже после того, как пользователь выбрал выбор), будет необычным и неожиданным поведением.

Обновление: Я думаю, что этот образец позволит вам делать то, что выхотеть (то есть иметь список с множественным выбором, который принимает форму объекта только одного элемента управления):

http://www.codeguru.com/csharp/csharp/cs_controls/treeview/article.php/c15373/

1 голос
/ 04 июня 2013

Эта функциональность доступна в .NET 3.0 и более поздних версиях.Используйте свойство ComboBox.StaysOpenOnEdit

0 голосов
/ 01 октября 2014

Хотя я понимаю, что вопрос был предназначен для winforms, пожалуйста, позвольте мне дать ответ для ищущих wpf (как я и получил здесь, на самом деле).

просто поместите что-то подобное в поле со списком.

<Grid>
    <ComboBox Width="1" Height="1" IsDropDownOpen="{Binding ElementName=TButton,Path=IsChecked,Mode=TwoWay}">
        <Grid Width="200" Height="400" Background="BlanchedAlmond" Margin="-5" IsHitTestVisible="True">
            <Button Background="Transparent"></Button> <--------- This is the equivalent of a e.handled
            <StackPanel>
                <Button Content="Button 1"/>
                <Button Content="Button 1"/>
                <Button Content="Button 1"/>
                <Button Content="Button 1"/>
            </StackPanel>
        </Grid>
    </ComboBox>
   <ToggleButton x:Name="TButton" Content="Drop" MaxHeight="40" MaxWidth="40"/>
</Grid>

Быстрое и грязное исправление для приличного, беспроблемного управления выпадающим меню.

Когда вы нажимаете элемент со списком, вы фактически нажимаете невидимую кнопку, и комбо остается открытым.

Я пробовал с самым ярким видимым прямоугольником, но без кубиков. Это делает трюк.

Примечание


Следует заменить невидимый фон стилем, который полностью удаляет кнопку (когда мышь нажата или выполнен щелчок).

Также было бы неплохо использовать иконку / путь удаления шрифта вместо drop . :)

Я еще раз прошу прощения за публикацию здесь. Я искал повсюду быстрое раскрывающееся управление с 0 внешними зависимостями (всплывающее окно не будет делать), и все, на что я наткнулся, это смехотворно (без необходимости) сложные реализации. Я надеюсь, что это приведет кого-то в правильном направлении!

Удачи вам!

Редактировать Простая непрозрачность 0 подойдет. Doh ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...