Para hacer una interfaz de usuario conveniente para una aplicación .Net 2.0 Winforms en la que estoy trabajando, necesito un control que estoy bastante seguro que va más allá del comportamiento "fuera de la caja" de cualquier control estándar. Una maqueta de lo que estoy tratando de alcanzar la siguiente manera:Complex .Net 2.0 Windows Forms control: ¿por dónde empezar?
Mock up http://www.claware.com/images/temp/mockup.png
En esencia, esta parte de la aplicación intenta analizar las palabras en sílabas de lenguas tribales (sin diccionario para referirse a; todas y cada una de Unicode los caracteres son posibles.) Para cuando el usuario llega tan lejos, ya ha definido las vocales/consonantes en su idioma y alguna otra configuración. Hay entonces un proceso iterativo de (1) la aplicación adivina qué sílabas existen en el lenguaje según algunas reglas, (2) el usuario refina las suposiciones, selecciona los análisis correctos o analiza manualmente una palabra, (3) la aplicación "aprende" "a partir de los comentarios de los usuarios y hace conjeturas más inteligentes, (4) repita hasta que los datos sean" lo suficientemente buenos "para continuar.
El control debe presentar cada palabra (los encabezados grises), luego todas las suposiciones de ruptura de sílaba (las áreas blancas con puntos que separan las partes de las palabras). También hay una forma de ingresar manualmente un análisis que mostrará un área de texto y botón de guardar (en la parte inferior de la maqueta). Cuando el usuario pasa el cursor sobre una conjetura, el fondo cambia y aparecen los botones "aceptar/rechazar". Al hacer clic en aceptar o ingresar un análisis manual, se elimina la palabra completa de la lista. Al hacer clic en el botón de rechazar, se elimina solo ese elemento.
No estoy de ninguna manera 100% vendido en el formato que tengo arriba, pero creo que se puede tener una idea general de los tipos de formato y control funcional que necesito. El control también se desplazará verticalmente; puede haber miles de palabras inicialmente.
Mi pregunta para usted con experiencia WinForms developers es: ¿por dónde empezar? Realmente me gustaría permanecer dentro del marco central de .Net y extender un control existente en lugar de un control de un tercero. (A riesgo de comenzar una guerra religiosa: sí, sufro de síndrome NIH, pero es una decisión consciente basada en muchas soluciones rápidas pero problemas a largo plazo con controles de terceros). ¿Dónde puedo obtener el máximo beneficio? "bang for my bucK" y la menos reinventando la rueda? ¿Vista de la lista? ¿Cuadro de lista? ScrollableControl? ¿Debo volver a Control y pintar todo de forma manual? ¡Agradezco cualquier ayuda que pueda proporcionarme!
[Editar] Gracias a todos por las ideas. Parece que la solución más elegante para mis propósitos es crear un control personalizado que consta de un FlowLayoutPanel y un VScrollBar. El FlowLayoutPanel puede contener instancias de los controles personalizados utilizados para cada palabra. Pero el FlowLayoutPanel es virtual, es decir, solo contiene aquellas instancias que son visibles (y algunas "simplemente sin desplazamiento"). Los eventos VScrollBar determinan qué debe cargarse. Un poco de código para escribir, pero no está mal y parece funcionar bien.
¿Está obligado a utilizar WPF? En un aspecto, es WinForms + HTML y tus maquetas serían fáciles de usar en Expression Blend. – sipwiz
Lamentablemente, sí. A menudo tengo esos momentos de "hombre, realmente me gustaría poder usar WPF". –
Me interesaría ver el artículo terminado ... – cjk