Pregunta

Esta es una continuación de mi pregunta anterior "Posicionamiento de control dependiente de la fuente."Es un intento de resolver el real problema detrás de esa pregunta, tal vez de manera diferente a la que estaba preguntando.

Ejemplo del planteamiento del problema: Quiero una casilla de verificación que diga "Ajustar precios por <X> <Y> después de cargar", donde <X> es un número---ajustable con un NumericUpDown---y <Y> es "porcentaje" o "dólares", y las decisiones las realiza un ComboBox.Esto estará en una sola línea.

La complicación: Quiero poder cambiar mis fuentes para todos estos controles (básicamente configurarlas en System.Drawing.Fonts.MessageBoxFont, que es Tahoma 8 pt en Windows XP/etc.y Segoe UI 9 pt en Vista), sin estropear mi diseño, que con mi actual Position-propiedad: el paradigma de establecimiento no funciona.

En términos más generales, me gustaría que los controles se dispusieran dinámicamente de forma independiente de la fuente, de modo que el <X> NumericUpDown encaja perfectamente en el espacio entre "by" y el <Y> ComboBox, y de manera similar el <X> ComboBox encaja con respecto a la <X> CheckBox y la cadena "después de cargar" a su derecha.

La parte que todos parecen perderse: Todo esto está anidado dentro de un CheckBox.Entonces, idealmente, hacer clic en las palabras "después de la carga" debe verificar/desmarcar la casilla de verificación y dibujar ese pequeño rectángulo resaltado alrededor de "Ajustar los precios después de la carga". Así que solo abofeteando a un extra Label al final no funciona, porque entonces no alterna el CheckBox;De manera similar, tratar de arreglar las cosas conectando un Label's Click El evento no producirá el rectángulo resaltado deseado.

¿Soluciones? En este punto estoy pensando:

  1. Reconsidere el problema, de alguna manera, tal vez con una solución fea como dos líneas de texto separadas:"Ajustar los precios encontrados después de cargar" (CheckBox), "Importe del ajuste:" (NumericUpDown y ComboBox).Esto es realmente malo porque mi cuadro de opciones está absolutamente lleno de opciones de este tipo (es decir,el tipo en el ejemplo), por lo que al menos duplicaría su tamaño vertical.

  2. ¿Algún tipo de control personalizado? SplittableCheckBox?

  3. Algún tipo de magia con un TableLayout ¿control?(Estoy bastante seguro de que esto falla en "la parte que todos parecen pasar por alto").

  4. Ríndete y vuelve a MS Sans Serif, o usa Tahoma de manera uniforme, o empaqueta Segoe UI con mi aplicación, sin respetar así las fuentes predeterminadas del sistema.

  5. (Nuevo, mediante edición) Cambie a WPF, si alguien puede convencerme de que admite exactamente este escenario.

¿Fue útil?

Solución

Si tiene varias opciones que siguen este diseño, ¿por qué no crear un control de usuario?El control de usuario contendrá CheckBox, NumericUpDown, ComboBox y una etiqueta para "después de cargar".Puede anular OnFontChanged para ajustar la ubicación de los controles según la representación del texto con la fuente dada.Agregue un EventHandler a la etiqueta para marcar/desmarcar la casilla de verificación.

En cuanto a que el rectángulo de enfoque rodee todos los controles, debería poder darle enfoque al control del usuario cuando se hace clic en uno de sus controles internos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top