Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tengo q hacer una validacin en visual studio, en un campo de texto capturo una fecha y necesito validar q esa fecha no sobrepase la fecha actual del sistema, si la fecha es mayor a la actual, q no guarde en la base de datos, si es menor, q me deje guardar. Si alguien me puede ayudar con esto le agradecera, si se puede mandenme un ejemplo d como se podra hacer en C#.
DateTime dt1 = new DateTime(); dt1 = Convert.ToDateTime(this.textBox1.Text.To if (dt1.Date > DateTime.Now.Date) MessageBox.Show("fecha mayor a hoY"); else MessageBox.Show("fecha menor a hoY");
CONTROL DE USUARIO
Crear el proyecto
Cuando cree un nuevo proyecto, debe establecer el espacio de nombres de la raz, el nombre de ensamblado y el de proyecto, adems de asegurarse de que el componente predeterminado estar en el espacio de nombres correcto. Para crear la biblioteca de controles ctlClockLib y el control ctlClock
1. En el men Archivo, elija Nuevo y, a continuacin, haga clic en Proyecto para abrir el cuadro de dilogo Nuevo proyecto. 2. Seleccione la plantilla de proyecto Biblioteca de controles de Windows en la lista de Proyectos deC# y escriba ctlClockLib en el cuadro Nombre. Nota La plantilla Biblioteca de controles de Windows no est disponible en la edicin Standard de Visual C# .NET. Para obtener ms informacin, vea Caractersticas de Visual C# Standard.
El nombre del proyecto, ctlClockLib, se asigna tambin de forma predeterminada al espacio de nombres de la raz. El espacio de nombres de la raz se utiliza para calificar los nombres de los componentes del ensamblado. Por ejemplo, si dos ensamblados proporcionan componentes denominados ctlClock, puede especificar el componente ctlClock mediante ctlClockLib.ctlClock. En el Explorador de soluciones, haga clic con el
botn secundario del mouse (ratn) en UserControl1 y seleccione Ver cdigo en el men contextual.
3. Busque la instruccin Class, public class UserControl1 y cambie UserControl1 a ctlClock para cambiar el nombre del componente. Nota De manera predeterminada, un control de usuario hereda de la clase UserControl proporcionada por el sistema. La clase UserControl proporciona la funcionalidad necesaria para todos los controles de usuario e implementa mtodos y propiedades estndar. 4. Busque el constructor, public UserControl1(), y cambie UserControl1 a ctlClock. 5. En el Explorador de soluciones, haga clic en UserControl1, a continuacin, en la ventana Propiedades cambie la propiedad FileName a ctlClock.cs. 6. En el men Archivo, elija Guardar todo para guardar el proyecto.
4. En el Cuadro de herramientas, haga clic en la ficha Windows Forms y, a continuacin, haga doble clic en Timer.
Dado que un temporizador es un componente, no tiene representacin visual en tiempo de ejecucin. En consecuencia, no aparece con los controles en el Diseador de controles de usuario, sino en la bandeja de componentes.
5. En la bandeja de componentes, haga clic en timer1, establezca la propiedad Interval como 1000 y la propiedad Enabled como True.
La propiedad Interval controla la frecuencia con la que se incrementa el valor del componente temporizador. A cada paso de timer1, se ejecuta el cdigo del evento timer1_Tick. El intervalo representa el nmero de milisegundos entre paso y paso.
6. En la bandeja de componentes, haga doble clic en timer1 para ir al evento timer1_Tick de ctlClock. 7. Modifique el cdigo de modo que se asemeje al siguiente ejemplo: Asegrese de cambiar el modificador de acceso de Private a Protected:
8. protected void timer1_Tick(object sender, System.EventArgs e) 9. { 10. // Causes the label to display the current time 11. lblDisplay.Text = DateTime.Now.ToLongTimeString(); 12. }
Este cdigo hace que se muestre la hora actual en lblDisplay. Dado que el intervalo de timer1 se estableci en 1000, este evento se activar cada mil milisegundos, por lo que la hora se actualizar cada segundo.
13. Modifique el mtodo para que pueda reemplazarse, mediante la palabra clave virtual. Para obtener ms informacin, vez la siguiente seccin de este tema, "Heredar de un control de usuario".
14. protected virtual void timer1_Tick(object sender, System.EventArgs e)
Estas instrucciones crean las variables privadas que se utilizarn para almacenar los valores de las propiedades que va a crear.
5. Escriba el cdigo siguiente bajo las declaraciones de variables del paso 2:
6. // Declares the name and type of the property. 7. public Color ClockBackColor 8. // Retrieves the value of the private variable colBColor. 9. { 10. get 11. { 12. return colBColor; 13. } 14. // Stores the selected value in the private variable colBColor, and 15. // updates the backcolor of the label control lblDisplay. 16. set 17. { 18. colBColor = value; 19. lblDisplay.BackColor = colBColor; 20. } 21. } 22. // Provides a similar set of instructions for the forecolor. 23. public Color ClockForeColor 24. { 25. get 26. { 27. return colFColor; 28. } 29. set 30. { 31. colFColor = value; 32. lblDisplay.ForeColor = colFColor; 33. } 34. }
El cdigo anterior crea dos propiedades personalizadas, ClockForeColor y ClockBackColor, disponibles para posteriores usuarios de este control. Las instrucciones get y set permiten el almacenamiento y la recuperacin del valor de la propiedad; adems, proporcionan el cdigo necesario para implementar la funcionalidad adecuada para la propiedad.
35. En el men Archivo, elija Guardar todo para guardar el proyecto.
Probar el control
Los controles no son aplicaciones independientes; deben alojarse en un contenedor. Para probar el control, deber proporcionarle un proyecto de prueba dentro del cual se ejecutar. En esta seccin, generar el control y lo probar en un formulario Windows Forms. Para generar el control
Observe que el proyecto aparece ahora en la ventana Componentes seleccionados. Tras haber agregado la referencia, puede colocar el control en el formulario. Para probar el control
1. En el Cuadro de herramientas, haga clic en Mis controles de usuario y, a continuacin, desplcese hasta que se muestre el icono de control que representa ctlClock. 2. Haga doble clic en el icono ctlClock.
Se agregar al formulario una copia del control. Observe que muestra la hora actual y que se actualiza cada segundo.
3. En el Cuadro de herramientas, seleccione el icono y mueva el mouse sobre el formulario. 4. Mantenga presionado el botn primario del mouse mientras lo mueve por el formulario.
En el formulario se dibujar otra copia del control. Puede agregar al formulario tantas copias del temporizador como desee.
5. En el diseador, haga clic en una de las instancias de ctlClock.
En esta seccin vio cmo se pueden combinar componentes y controles de Windows con cdigo y empaquetamiento para ofrecer funcionalidad personalizada en forma de control de usuario. Aprendi a exponer propiedades en el control de usuario, as como a
probar el control una vez terminado. En la seccin siguiente aprender a construir un control de usuario heredado que utilice ctlClock como base.
El primer paso para crear un control heredado es derivarlo de su control primario. Esta accin crea un nuevo control que tiene todas las propiedades, mtodos y caractersticas grficas del control primario, pero que tambin acta como base para la adicin de funcionalidad nueva o modificada. Para crear el control heredado
1. Haga clic en ctlClockLib del Explorador de soluciones. 2. En el men Proyecto, elija Agregar control heredado.
Se abrir la ventana Agregar nuevo elemento, con Control de usuario heredado seleccionado.
3. En el cuadro Nombre, escriba ctlAlarmClock.cs y haga clic en Abrir.
Las propiedades se agregan a un control heredado del mismo modo que se agregan a un control de usuario. Ahora utilizar la sintaxis de declaracin de propiedades para agregar dos propiedades al control: AlarmTime, que almacenar el valor de fecha y hora en que se activar la alarma y AlarmSet, que indica si est establecida o no la alarma. Para agregar propiedades al control de usuario
1. En el Explorador de soluciones, haga clic en ctlAlarmClock con el botn secundario del mouse (ratn) y elija Ver cdigo. 2. Busque la instruccin public class. Tenga en cuenta que el control se hereda de ctlClockLib.ctlClock. Debajo de la instruccin {, escriba el siguiente cdigo:
3. private DateTime dteAlarmTime; 4. private bool blnAlarmSet; 5. // These properties will be declared as public to allow future 6. // developers to access them. 7. public DateTime AlarmTime 8. { 9. get 10. { 11. return dteAlarmTime; 12. } 13. set 14. { 15. dteAlarmTime = value; 16. } 17. } 18. public bool AlarmSet 19. { 20. get 21. { 22. return blnAlarmSet; 23. } 24. set 25. { 26. blnAlarmSet = value; 27. } 28. }
El control heredado tiene una interfaz visual idntica al control del que se hered. Posee los mismos controles constituyentes que su control primario, pero las propiedades de los controles constituyentes no estarn disponibles a menos que se expusieran especficamente. Puede efectuar adiciones a la interfaz grfica de un control de usuario heredado de la misma forma en que lo hara con cualquier control de usuario. Para continuar realizando adiciones a la interfaz visual del reloj de alarma, agregar un control de etiqueta que parpadear cuando suene la alarma. Para agregar el control de etiqueta
1. En el Explorador de soluciones, haga clic en ctlAlarmClock con el botn secundario del mouse (ratn) y elija Diseador de vistas en el men contextual.
Observe que, aunque se muestran todas las propiedades, estn atenuadas. Esto indica que estas propiedades son nativas de lblDisplayy que no pueden modificarse ni se puede tener acceso a ellas en la ventana de propiedades. De forma predeterminada, los controles contenidos en un control de usuario son private y no es posible tener acceso a sus propiedades por ningn medio.
Sugerencia Si desea que los futuros usuarios del control de usuario tengan acceso a sus controles internos, declrelos como public o protected. Esto le permitir
establecer y modificar las propiedades de los controles contenidos en el control de usuario, mediante el cdigo adecuado. 3. Agregue un control Label al control de usuario. 4. Por medio del mouse, lleve el control de etiqueta a justo debajo del cuadro de presentacin. En la ventana Propiedades, defina las propiedades siguientes: Propiedad Name Text TextAlign Visible Parmetro lblAlarm Alarma! Middle Center false
En las secciones anteriores, agreg propiedades y un control que habilitar la funcionalidad de alarma en el control de usuario. En esta seccin, agregar cdigo para comparar la hora actual con la hora de alarma y, si son iguales, hacer que parpadee una alarma. Si reemplaza el mtodo timer1_Tick de ctlClock y le agrega cdigo adicional, extender la capacidad de ctlAlarmClock al mismo tiempo que conserva toda la funcionalidad inherente de ctlClock. Para reemplazar el mtodo timer1_Tick de ctlClock
1. En el Editor de cdigo, busque la instruccin private bool blnAlarmSet;. Inmediatamente a continuacin, agregue la siguiente instruccin:
2. private bool blnColorTicker;
3. En el Editor de cdigo, busque el carcter } al final de la clase. 4. Inmediatamente antes del carcter }, agregue el cdigo siguiente:
5. protected override void timer1_Tick(object sender, System.EventArgs e) 6. { 7. // Calls the Timer1_Tick method of ctlClock. 8. base.timer1_Tick(sender, e); 9. // Checks to see if the Alarm is set. 10. if (AlarmSet == false) 11. return; 12. else 13. // If the date, hour and minute of the alarm time are the same as 14. // now, flash! 15. { 16. if (AlarmTime.Date == DateTime.Now.Date && AlarmTime.Hour == 17. DateTime.Now.Hour && AlarmTime.Minute == DateTime.Now.Minute) 18. { 19. // Makes lblAlarmVisible, and changes the backcolor based on
20. label 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
// the value of blnColorTicker. The backcolor of the // will flash once per tick of the clock. lblAlarm.Visible = true; if (blnColorTicker == false) { lblAlarm.BackColor = Color.Red; blnColorTicker = true; } else { lblAlarm.BackColor = Color.Blue; blnColorTicker = false; } } else { // Once the alarm has sounded for a minute, the label // invisible again. lblAlarm.Visible = false;
Al agregar este cdigo se resuelven varias tareas. La instruccin override indica el control que utilice este mtodo en lugar del mtodo heredado del control base. Cuando se llama a este mtodo, ste llama al que reemplaza al invocar la instruccin base.timer1_Tick; de este modo, se asegura que toda la funcionalidad incorporada en el control original se reproduzca en este control. A continuacin, ejecuta cdigo adicional para incorporar la funcionalidad de la alarma. Cuando se active la alarma, aparecer un control etiqueta intermitente. El control de reloj de alarma est casi completo. Lo nico que queda es implementar un medio para desactivarlo. Para ello, agregaremos cdigo al mtodo lblAlarm_Click. Para implementar el mtodo de apagado
1. En el Explorador de soluciones, haga clic con el botn secundario en ctlAlarmClock. cs y elija Diseador de vistas.
Se abrir el diseador.
2. Agregue un botn al control. Establezca las propiedades del botn de la manera siguiente: Propiedad Name Text Valor btnAlarmOff Deshabilitar alarma
12. En el men Archivo, elija Guardar todo para guardar el proyecto. Probar el control heredado
Como ocurre con los controles de usuario estndar, los controles de usuario heredados no son independientes y deben alojarse en un formulario o en otro contenedor. Puesto que ctlAlarmClock ofrece una funcionalidad ms profunda, ser necesario cdigo adicional para probarlo. En esta seccin, escribir un programa sencillo para probar la funcionalidad de ctlAlarmClock. Escribir cdigo para establecer y mostrar la propiedad AlarmTime de ctlAlarmClock y probar sus funciones inherentes. Para generar el control y agregarlo a un formulario de prueba
1. Haga clic en ctlClockLib del Explorador de soluciones. En el men Generar, elija Generar ctlClockLib. 2. Agregue un nuevo proyecto Aplicacin para Windows y asgnele el nombre Test2. 3. En el Explorador de soluciones, haga clic con el botn secundario del mouse (ratn) en el nodo References del proyecto de prueba. Haga clic en Agregar referencia para mostrar la ventana Agregar referencia. Haga clic en la ficha con la etiqueta Proyectos. El proyecto aparecer en la lista Nombre de proyecto. Haga doble clic en el proyecto y observe que ahora aparece en la ventana Componentes seleccionados. 4. En el Cuadro de herramientas, haga clic en la ficha formularios Mis controles de usuario. 5. Desplcese hacia abajo hasta que sea visible el icono correspondiente a ctlAlarmClock. 6. Haga doble clic en ctlAlarmClock para agregar una copia de ctlAlarmClock al formulario. 7. En el Cuadro de herramientas, busque y haga doble clic en DateTimePicker para agregar un control DateTimePicker al formulario; a continuacin, haga doble clic en Label para agregar un control Label. 8. Utilice el mouse para colocar los controles en el lugar adecuado del formulario. 9. Establezca las propiedades de estos controles de la manera siguiente: Control label1 Propiedad Text Name dateTimePicker1 Name Valor (djela en blanco) lblTest dtpTest
Format
Time
19. En el Explorador de soluciones, haga clic en Test2 con el botn secundario del mouse y elija Establecer como proyecto de inicio en el men contextual. 20. En el men Depurar, elija Iniciar.
Se iniciar el programa de prueba. Observe que la hora actual se actualiza en el control ctlAlarmClock y que la hora de inicio se muestra en el control DateTimePicker.
21. Haga clic en DateTimePicker donde se muestran los minutos. 22. Con el uso del teclado, defina un valor para los minutos que sea un minuto ms que la hora actual que muestra ctlAlarmClock.
Cuando la hora que se muestra alcance la hora establecida para la alarma, parpadear lblAlarm. Para desactivar la alarma, haga clic en btnAlarmOff. Ahora puede reiniciar la alarma. Este tutorial trataba varios conceptos clave. Aprendi a crear un control de usuario mediante la combinacin de controles y componentes en un contenedor de control de usuario. Aprendi a agregar propiedades al control y a escribir cdigo para implementar funcionalidades personalizadas. En la segunda seccin, aprendi a extender la funcionalidad de un control de usuario dado por medio de la herencia, as como a reemplazar los mtodos originales para alterar su funcionalidad.