2011-02-10 9 views
6

Necesito simular un formulario que sea similar a la interfaz que se ve durante la instalación de cualquier software. Hay botones siguiente y posterior y toda la información ingresada por el usuario se procesa solo cuando hace clic en el botón de finalizar.
Cuando el usuario hace clic en el botón Atrás, se le muestra la información ingresada previamente.
Cuando el usuario hace clic en el botón siguiente, se le muestra la siguiente pantalla. Toda la información mostrada se muestra en un formulario.C# necesito consejo sobre un simple problema en la navegación de formulario

Hay 3 secciones que debo mostrar al usuario.

  • Sección 1 - pulsando el botón situado junto mostrará sección 2
  • Sección 2 - presionando el botón de retroceso mostrará sección 1 y pulsando el botón situado junto mostrará sección 3
  • Sección 3 - pulsar el botón anterior mostrará la sección 2 y pulsando el botón Finalizar procesará toda la información introducida en la sección 1,2 y 3.

Actualmente planificación para implementar la solución se enumeran a continuación:

  1. Crear una forma
  2. añadir todos los elementos para la sección 1 y crear un próximo evento de botón que ocultar todo el elemento mostrado en el apartado 1, que incluye el botón y mostrar todos los elementos de la sección 2.
  3. Crear evento de botón para el botón Atrás para la sección 2, de modo que oculta todos los elementos de la sección 2, incluido el botón, y muestra todos los elementos de la sección 1 y el siguiente para ocultar todo el elemento de la sección 2, incluido el botón, y mostrar todo el elemento de la sección 3
  4. Crear evento de botón similar para la sección 3

¿Existe alguna solución mejor que la descrita anteriormente? Si es así, por favor describe el enfoque. Cualquier ayuda proporcionada será muy apreciada.

+1

Lo que estás buscando se llama "Mago". Es posible que pueda encontrar algunos buenos tutoriales buscando con esa palabra clave. – Justin

+0

Si se trata de una aplicación web (no se puede deducir de su pregunta), hay un control de asistente en la biblioteca de control web estándar que hará exactamente lo que usted desee. –

+0

Estoy haciendo una aplicación de escritorio. Gracias, justin, el asistente es exactamente lo que quiero. Gracias por tu ayuda. – abduls85

Respuesta

2

Una forma de lograrlo es mediante un control de pestañas y ocultar las pestañas de manera que el usuario no puede navegar entre ellos y en lugar de controlar la operación de pasar de una pestaña a la siguiente programáticamente.

Uso el control KryptonNavigator ya que proporciona muchos modos diferentes que hacen que sea fácil ocultar pestañas para que solo el contenido de pestañas sea visible, etc. Sin embargo, debería ser posible ocultar las pestañas del control de pestañas estándar.

KryptonNavigator

+0

lo he usado en el pasado. No he usado ningún control de asistente. Lo bueno de esto es que puedes separar fácilmente los controles por pestaña en el diseñador. Una gran solución simple. – jrsconfitto

0

Puede crear controles personalizados para las tres pantallas diferentes, luego puede agregar esos 3 controles al formulario, lo que facilita ocultar/mostrar los controles apropiados.

O bien, puede crear tres formularios por separado, y luego mostrar sus formularios en orden y realizar las acciones en la función de programas Main() en lugar de utilizar un formulario como su objeto de inicio. Como

static void Main() 
{ 
    Form1 f1 = new Form1(); 
    if (f1.ShowDialog() == DialogResult.OK) 
    { 
    // do actions 
    // show next form 
    // etc. 
    } 
} 
+1

¿Qué pasa si el usuario presiona el botón Atrás ... Debe necesitar trabajar en los resultados del diálogo para tales situaciones y puede volverse engorroso ... En cambio, un control de asistente/control de pestañas será útil. –

0

Puede usar la estructura usercontrol para lograr este tipo de comportamiento. Puede agregar un control de panel simple y cambiar el contenido del panel de acuerdo con los botones presionados. Simplemente puede cambiar el contenido del panel usando yourPanel.Controls.Add(your_user_control). Por lo tanto, se pueden implementar diferentes conjuntos de control en un formulario de win.

Gracias

0

Sí, como dijo Iain, el control asistente es probablemente la mejor opción, pero si eso no funciona, intente buscar MultiView o controles Accordian. Hacen controles que son específicamente para ocultar/mostrar secciones en un formulario, por lo que no tiene que pasar de una forma a otra y, por lo tanto, permanece en el mismo ámbito todo el tiempo. Hace que mantener los campos poblados sea mucho más fácil.

Cuestiones relacionadas