Splash y acceso al sitio Formularios (Problemas y soluciones)
Enviado por elg.system.32 • 11 de Noviembre de 2013 • 1.226 Palabras (5 Páginas) • 327 Visitas
Splash y acceso al sitio Formularios (Problemas y soluciones)
Descargar Codigo Fuente - 64.83 KB
"Una inversión en conocimiento siempre paga el mejor interés."
Benjamin Franklin
Introducción
En este artículo, me gustaría hablar de los problemas del Splash \ Login Formas creación. A menudo me tropiezo con las preguntas de los programadores novatos sobre el Splash \ Login Forms en los foros. En mi opinión, las respuestas a estas preguntas muchas veces no dan una información completa. Así que me decidí a escribir este artículo. En él se describe completamente estos problemas y soluciones.
Al principio, me gustaría hablar de una pregunta - ¿Qué causa estos problemas que surjan? En mi opinión, se conecta con una información insuficiente o un concepto difuso acerca de la arquitectura de Windows y procesos de Windows cuando empezamos programa en ejecución en los sistemas Windows. Este es el principal problema. Así que vamos a resolverlo. No voy a contar un gran buenos libros sobre Windows, no tiene sentido. Yo sólo quiero que usted tiene la oportunidad de conocer acerca de la creación del programa de ejemplo en Windows. Eso le dará una comprensión de cómo crear el Splash \ Login Forms.
¿Qué es un proceso?
En primer lugar, vamos a discutir una definición de "proceso en Windows". El Proceso - que es una copia del programa ejecutable, y que consta de dos componentes:
1. Un objeto de la del núcleo, a través del cual el sistema operativo gestiona el proceso. Mantiene la información static sobre el proceso.
2. Un espacio de direcciones que contiene código ejecutable y los datos del proceso.
El proceso en sí no hace nada, es decir, que es inerte. Para que haga algo, debe tener al menos un hilo. El hilo es responsable de la ejecución de código en el espacio de direcciones del proceso. Por lo tanto, cuando el proceso se inicia, el sistema operativo crea automáticamente el hilo principal, que a su vez puede generar otros hilos. Además, si queremos que nuestra aplicación para responder al movimiento del ratón, hacer clic en el botón, y así sucesivamente, tenemos que crear un bucle de mensajes en el hilo. Así que tenemos un poco de estructura: proceso - Rosca - un bucle de mensajes. Si queremos cerrar el programa, tenemos que cerrar el bucle de mensajes principal. Esto ocurre cuando se cierra el formulario principal o haciendo método Application.Exit(), así como el método de ExitThread() en el hilo principal.
¿Cómo lo hace?
Todo se discutió anteriormente, Visual Studio crea automáticamente, cuando decidimos crear una plantilla de proyecto Aplicación de Windows Forms. Armado con este conocimiento, echar un vistazo a el código, que todos seguramente hemos visto en repetidas ocasiones:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
Cuando se llama a un método Application.Run(new Form1()), se crea un nuevo subproceso que crea un bucle de mensajes, y un objeto de la clase Form y lo muestra. Consideremos cuidadosamente este método. Este método está sobrecargado y puede tener las siguientes opciones:
1. Run()
2. Run(ApplicationContext)
3. Run(Form)
(Para obtener más información, vea este enlace.)
No estamos interesados en el primer método sobrecargado en el contexto de este artículo, a menos que, por supuesto, decide crear algo en el código no seguro, el tercer método que ya hemos discutido. Pero el segundo es lo que vamos a ser particularmente interesante pulg Esto crea la clase de objeto ApplicationContext, que es responsable de crear el hilo y el ciclo estándar de mensaje. Ahora todo es muy simple - tenemos que crear una clase descendiente LoginTestContext de clase ApplicationContext, que vamos a crear una lógica con los formularios de solicitud:
public class LoginTestContext : ApplicationContext
{
// Aquí se puede declarar la aplicación de todas las formas y gestionar directamente
// (Mostrar, cerrar, establece como MainForm y así sucesivamente)
private frmLogIn fLogin;
private frmMain fMain;
public LoginTestContext()
{
CreateSplashForm();
CreateLoginForm();
}
}
(Para obtener más información, vea este enlace.)
Y nuestro punto de entrada a la aplicación se verá de la siguiente manera:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// Ejecutar la aplicación con el contexto. Es formas splash, registro y principal
Application.Run(new LoginTestContext());
}
Crear el formulario Splash
Eso es todo! La forma de chapoteo se muestra cuando lo necesitamos y en el momento que necesitamos. Aquí, en lugar de hilo de sueño, usted puede hacer algo realmente necesario, como la carga de todos los recursos, al tiempo que muestra la barra de progreso o algún otro tipo de información.
private static void CreateSplashForm()
{
Form fSplash = new Form();
fSplash.BackgroundImage = System.Drawing.Image.FromFile(@"backg.bmp");
fSplash.BackgroundImageLayout = ImageLayout.Center;
fSplash.FormBorderStyle = FormBorderStyle.None;
fSplash.StartPosition = FormStartPosition.CenterScreen;
...