Está en la página 1de 11

validacion fecha en C#

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.

Agregar controles y componentes de Windows al control de usuario


Una parte esencial del control de usuario es una interfaz visual. Esta interfaz visual se implementa mediante la adicin de uno o ms controles de Windows al Diseador de controles de usuario. En la demostracin siguiente, incorporar controles de Windows al control de usuario y escribir cdigo para implementar funcionalidad. Para agregar un control Label y un componente Timer al control de usuario
1. En el Explorador de soluciones, haga clic con el botn secundario en ctlClock.cs y elija Diseador de vistas. 2. En el Cuadro de herramientas, haga clic en la ficha Windows Forms y, a continuacin, haga doble clic en label.

En el Diseador de controles de usuario, se agregar al control un control de etiqueta denominado label1.


3. En el diseador, haga clic en label1. En la ventana Propiedades, establezca las propiedades siguientes: Propiedad Name Text TextAlign Font.Size Cambie a lblDisplay (Espacio en blanco) MiddleCenter 14

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)

15. En el men Archivo, elija Guardar todo para guardar el proyecto.

Agregar propiedades al control de usuario


El control de reloj encapsula ahora un control Label y un componente Timer, cada uno con su propio conjunto de propiedades inherentes. Aunque las propiedades individuales de estos controles no estarn disponibles para los futuros usuarios del control, puede crear y exponer propiedades personalizadas escribiendo los bloques de cdigo adecuados. En la seccin siguiente, agregar al control propiedades que permiten que el usuario cambie el color del fondo y del texto. Para agregar una propiedad al control de usuario
1. En el Explorador de soluciones, haga clic en ctlClock.cs con el botn secundario del mouse (ratn) y elija Ver cdigo en el men contextual.

Se abrir el Editor de cdigo para el control.


2. Busque la instruccin public class ctlClock. Tras el carcter { de apertura, escriba:
3. private Color colFColor;

4. private Color colBColor;

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

En el men Generar, haga clic en Generar.

Para crear un proyecto de prueba


1. En el men Archivo, seleccione Agregar proyecto y, a continuacin, haga clic en Nuevo proyecto para abrir la ventana Agregar nuevo proyecto. 2. Haga clic en Aplicacin para Windows y en el cuadro Nombre, escriba Test. 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 el cuadro de dilogo Agregar referencia. 4. Haga clic en la ficha con la etiqueta Proyectos. El proyecto aparecer en la lista Nombre de proyecto. 5. Haga doble clic en el proyecto.

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.

Aparecern las propiedades de esta instancia en la ventana Propiedades.


6. En la ventana Propiedades, busque la propiedad ClockBackColor y, a continuacin, seleccione la propiedad para mostrar la paleta de colores. 7. Haga doble clic en un color para elegirlo.

El color de fondo del control cambiar al color seleccionado.


8. Utilice una secuencia de eventos parecida para comprobar que la propiedad ClockForeColor funciona segn lo esperado.

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.

Heredar de un control de usuario


En la seccin anterior, aprendi a combinar controles de Windows, componentes y cdigo en controles de usuario reutilizables. Ahora puede utilizar el control de usuario como base a partir de la cual se generarn otros controles. El proceso de derivacin de una clase a partir de una clase base se denomina herencia. En esta seccin, crear un control de usuario denominado ctlAlarmClock. Este control se derivar de su control principal, ctlClock. Aprender a ampliar la funcionalidad de ctlClock reemplazando los mtodos principales y agregando mtodos y propiedades nuevos.
Crear el control heredado

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.

Aparecer la ventana Selector de herencia.


4. En Nombre de componente, haga doble clic en ctlClock. 5. En el Explorador de soluciones, examine los proyectos actuales. Observe que se agreg un archivo denominado ctlAlarmClock. Agregar las propiedades de alarma

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. }

Agregar a la interfaz grfica del control de usuario

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.

En la ventana principal se abrir el diseador para ctlAlarmClock.


2. Haga clic en la zona de presentacin del control y observe la ventana Propiedades.

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

Agregar la funcionalidad de alarma

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;

is made 37. 38. 39. } 40. } 41. }

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

3. En el diseador, haga doble clic en btnAlarmOff.

Se abrir el Editor de cdigo en la lnea private void btnAlarmOff_Click.


4. Modifique este mtodo de forma que se asemeje a lo siguiente:
5. private void btnAlarmOff_Click(object sender, System.EventArgs e) 6. { 7. // Turns off the alarm 8. AlarmSet = false; 9. // Hides the flashing label 10. lblAlarm.Visible = false; 11. }

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

10. En el diseador, haga doble clic en dtpTest.

Se abrir el Editor de cdigo en private void dtpTest_ValueChanged.


11. Modifique el cdigo de modo que se asemeje a lo siguiente:
12. private void dtpTest_ValueChanged(object sender, System.EventArgs e) 13. { 14. ctlAlarmClock1.AlarmTime = dtpTest.Value; 15. ctlAlarmClock1.AlarmSet = true; 16. lblTest.Text = "Alarm Time is " + 17. ctlAlarmClock1.AlarmTime.ToShortTimeString(); 18. }

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.

La hora de la configuracin de la alarma se muestra en lblTest.


23. Espere a que la hora que se muestra alcance la hora establecida para la alarma.

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.

También podría gustarte