Pregunta

todos sabemos "nuevas respuestas que tienes!", El barra de notificación de pliego de cargos. Me gustaría lo mismo en un formulario, preferiblemente tan suave. ¿Hay una manera sencilla? O tengo que crear completamente esto mismo?

Mis búsquedas no dió ningún resultado buenas, sólo un montón de barras de progreso y ventanas emergentes en el área de notificación del sistema, pero eso no es lo que estoy buscando.

Los mensajes que desea mostrar pertenecen a un formulario, no a toda la aplicación

¿Fue útil?

Solución

Crear dos paneles en su forma, un panel de notificaciones se acopló a la parte superior, y por debajo de que un panel de contenidos anclado a la parte superior. En su Form.Load, ajuste la altura del panel de notificaciones a cero. No ajuste la altura a cero en la vista Diseño, usted no será capaz de hacer clic en el panel de notificación para editarla.

Entonces, cuando llegue una notificación, dibujar el contenido en el panel de notificaciones y crear un System.Windows.Form.Timer que aumenta la altura del panel de notificaciones por unos pocos píxeles cada pocas decenas de milisegundos o menos. Pare cuando el panel es de la altura deseada. Hacer lo mismo con una altura negativa para ocultar el panel.

Esto no requiere volver a pintar o volver a calcular los tamaños o posiciones de nada, no de descubierto nada, y se ve resbaladiza. Lo he hecho y funciona.

Otros consejos

Simplemente podría animar un panel de caer hacia abajo desde la parte superior del área cliente del formulario.

El aumento de la coordenada y del panel en un bucle temporizado. El panel comenzaría a ser invisible y poco a poco visible. (El panel comenzaría en -panel.height y trabajar su camino hacia abajo a 0).

Si lo desea limitada a una forma particular, debería ser bastante fácil de poner un Panel en el formulario con su conjunto de Dock a DockStyle.Top, a continuación, colocar una etiqueta para la descripción y un botón que lo oculta.

No es difícil de hacer con un panel o un control de usuario, pero la parte más incómoda es hacer el contenido de forma deslizante hacia abajo como las diapositivas barra hacia abajo. Para simplificar el que iba a utilizar un SplitContainer. El splitpanel superior contiene la barra de notificaciones y la distancia divisor es inicialmente 0. deslice la barra a la vista mediante el incremento de la propiedad SplitterDistance. Hacerlo de este medio de manera que usted no tiene que preocuparse de hacer el resto del contenido de la diapositiva se establecen la forma (que es una molestia, ya que le impide utilizar acoplamiento).

La única desventaja de usar SplitContainer que se me ocurre es que la animación de la barra será ligeramente diferente: el texto no se desplazará hacia abajo con la barra, que se dará a conocer en el lugar como las diapositivas barra hacia abajo. Si esto te molesta, lo puede solucionar haciendo que el texto (o su panel de control / medida) deslice hacia abajo a medida que aumenta la distancia divisor (sólo un par más líneas de código).

Mostrando la barra:

    for (int i = 0; i <= 33; i++)
    {
        splitContainer1.SplitterDistance = i;
        Thread.Sleep(5);
        Refresh();
    }

Cómo ocultar la barra:

    for (int i = 33; i >= 0; i--)
    {
        splitContainer1.SplitterDistance = i;
        Thread.Sleep(5);
        Refresh();
    }

Por supuesto, si no te importa la barra de notificaciones simplemente que cubre la parte superior de su formulario, a continuación, puedes hacerlo todo muy fácilmente con un panel. :)

Yo estaba buscando lo mismo en este momento y encontré en este proyecto de código

No he utilizado todavía, así que no tengo idea de lo sólida que es.

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