Pregunta ¿Cómo puedo hacer que un cuadro combinado permanezca abierto después de seleccionar un elemento?


¿Cómo hago que un cuadro combinado permanezca abierto después de seleccionar un elemento en C #?

Quiero hacer esto porque en realidad es un comboBox con una lista de verificación para poder seleccionar varios elementos.


5
2018-02-13 08:58


origen


Respuestas:


Usar una ListBox en lugar de un ComboBox. Lo que desea hacer (mantener abierto un ComboBox incluso después de que el usuario haya seleccionado una opción) sería un comportamiento inusual e inesperado.

Actualizar:  Creo que esta muestra le permitirá hacer lo que quiera (que es tener una lista de selección múltiple que solo toma la forma real de un control):

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


3
2018-02-13 09:03



Utilizar Cuadro de lista en cambio, desde ComboBox hace ese comportamiento por su diseño central.

ListBox da un efecto similar (por lo tanto, todavía está abierto) y permite la selección múltiple.


5
2018-02-13 09:03



Si aún desea permitir que el usuario escriba una opción propia, aún puede usar un DropBox, simplemente configure la propiedad DropDownStyle a simple. Obtendrá algo similar con un ListBox pero con un TextBox en la parte superior donde el usuario puede escribir algo.


4
2018-02-13 09:06



Esta funcionalidad está disponible en .NET 3.0 y versiones posteriores. Utilizar el ComboBox.StaysOpenOnEdit propiedad


1
2018-06-03 20:03



Aunque me doy cuenta de que la pregunta estaba destinada a las formas de ganancias, permítame contribuir con una respuesta para los buscadores de wpf (ya que llegué aquí, en realidad).

simplemente ponga algo como esto en el cuadro combinado.

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

Solución rápida y sucia para un control decente sin problemas y sin problemas.

Cuando haces clic en el elemento del cuadro combinado, en realidad haces clic en el botón invisible y el combo permanece abierto.

Lo he intentado con una prueba de impacto visible, pero sin dados. Esto hace el truco.

Nota


Se debe reemplazar el fondo invisible por un estilo que elimine por completo el botón (cuando el mouse termina o se hace un clic).

Además, un icono / ruta de fuente de gota en lugar de soltar sería bueno. :)

yo pedir disculpas de nuevo por publicar aquí. He estado buscando por todos lados un control desplegable rápido con 0 dependencias externas (las ventanas emergentes no funcionan) y todo lo que he encontrado son implementaciones ridículamente (innecesariamente) complicadas. Espero que esto guíe a alguien en la dirección correcta!

¡La mejor de las suertes para ti!

Editar Una simple opacidad 0 servirá. Doh ...


0
2017-10-01 15:29