Foros del Web » Programación para mayores de 30 ;) » .NET »

TextBox personalizado para fechas c#

Estas en el tema de TextBox personalizado para fechas c# en el foro de .NET en Foros del Web. Hola a todos!! Estoy creando una aplicacion y quiero como dice el titulo quiero crear un textBox para introducir fechas pero qeue sea personalizado... es ...
  #1 (permalink)  
Antiguo 10/08/2009, 12:33
 
Fecha de Ingreso: agosto-2009
Mensajes: 33
Antigüedad: 14 años, 9 meses
Puntos: 0
TextBox personalizado para fechas c#

Hola a todos!!
Estoy creando una aplicacion y quiero como dice el titulo quiero crear un textBox para introducir fechas pero qeue sea personalizado... es decir sin usar mascaras ni nada de eso...

Tengo puesto el evento OnkeyPress para que acepte solo digitos... hasta ahi bien!

ahora lo que necesito es conseguir el formato dd/mm/aaaa, de manera qeu cuando introduzco los dos primeros digitos para el dia, automaticamente me ponga la barra '/'
pero si me confundo de dia o si quiero borrar que me permita borrar esa barra y que me vuelva a poner al rellenar los dos digitos del dia...
Lo unico qeu se esuqe se hace en el evento TextChanged pero no consigo hacerlo por mas que e probado cosas...

ayudaa porfavor!!


Mil Gracias a todos!!!
  #2 (permalink)  
Antiguo 10/08/2009, 14:11
 
Fecha de Ingreso: febrero-2003
Ubicación: chile
Mensajes: 101
Antigüedad: 21 años, 2 meses
Puntos: 1
Respuesta: TextBox personalizado para fechas c#

prueva con esta funcion JavaScript
Código:
function FormataDataHora(Obj)
{
	if(Obj.value.length == 2 || Obj.value.length == 5)
	{
		Obj.value = Obj.value + "/"
	}
	if(Obj.value.length == 10)
	{
		Obj.value = Obj.value + " "
	}
	if(Obj.value.length == 13 || Obj.value.length == 16)
	{
		Obj.value = Obj.value + ":"
	}
}
y en el textbox pon esto
Código:
 <asp:TextBox ID="txtIncidentOcurrence" runat="server" MaxLength="19" 
                            onkeypress="FormataDataHora(this); SoloNumeros()"></asp:TextBox>
__________________
s[K]eL
  #3 (permalink)  
Antiguo 10/08/2009, 14:40
 
Fecha de Ingreso: agosto-2009
Mensajes: 33
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: TextBox personalizado para fechas c#

creo que no va a funcionar porque no uso compilador java y aparte no tengo instalado j#
asiqeu si me lo pudises hacer en c# por favor te lo agradeceria millones!!
gracias igualmentee!!!
  #4 (permalink)  
Antiguo 10/08/2009, 14:44
 
Fecha de Ingreso: febrero-2003
Ubicación: chile
Mensajes: 101
Antigüedad: 21 años, 2 meses
Puntos: 1
Respuesta: TextBox personalizado para fechas c#

es codigo javascript no J# o sea va por el lado del cliente, en tu página HTML

Código:
<HTML>
blablablablablablabla...
</HTML>

<script language="javascript" type="text/javascript">
AQUI LA FUNCIÓN QUE TE ENVIE
</script>
si no entendiste, muestrame como lo hiciste para que solo te dejara escribir solo numeros en el TextBox
__________________
s[K]eL
  #5 (permalink)  
Antiguo 10/08/2009, 15:46
 
Fecha de Ingreso: agosto-2009
Mensajes: 33
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: TextBox personalizado para fechas c#

Amm vale!! Bueno quizas no me explique bien! no es una pagina html, sino una apilcacion windows form en .net!

Mi codigo es el siguiente en c#:

private void FechaTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (Char.IsDigit(e.KeyChar))
{
e.Handled = false;
}
else if (Char.IsControl(e.KeyChar))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
}

pero lo del textBox numerico ya lo tengo... me interesa hace lo de la barra /


Gracias!!!
  #6 (permalink)  
Antiguo 10/08/2009, 15:54
 
Fecha de Ingreso: enero-2008
Mensajes: 2
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: TextBox personalizado para fechas c#

Ahhhh por ahi si, mira solo tienes que agregar estas lineas

Código:
private void FechaTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
  
//Esto quiere decir si el largo de tu textbox es igual a 2 o 5 le agrega la barra /
           if(FechaTextBox.Length.Equals(2) || FechaTextBox.Length.Equals(5))
                   FechaTextBox.Text = FechaTextBox.Text.Trim()+"/";

        }
Cuentame como te fue
  #7 (permalink)  
Antiguo 10/08/2009, 15:56
 
Fecha de Ingreso: febrero-2003
Ubicación: chile
Mensajes: 101
Antigüedad: 21 años, 2 meses
Puntos: 1
Respuesta: TextBox personalizado para fechas c#

Ahhhh por ahi si, mira solo tienes que agregar estas lineas

Código:
private void FechaTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
  
//Esto quiere decir si el largo de tu textbox es igual a 2 o 5 le agrega la barra /
           if(FechaTextBox.Length.Equals(2) || FechaTextBox.Length.Equals(5))
                   FechaTextBox.Text = FechaTextBox.Text.Trim()+"/";

        }
Cuentame como te fue
__________________
s[K]eL
  #8 (permalink)  
Antiguo 10/08/2009, 16:45
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 5 meses
Puntos: 22
Respuesta: TextBox personalizado para fechas c#

Buscate la propiedad Mask del control, por ahi puedes empezar a leer y no necesitas complicarte con mas cosas.

Saludos
  #9 (permalink)  
Antiguo 10/08/2009, 17:49
 
Fecha de Ingreso: agosto-2009
Mensajes: 33
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: TextBox personalizado para fechas c#

Cita:
Iniciado por gedarufi Ver Mensaje
Buscate la propiedad Mask del control, por ahi puedes empezar a leer y no necesitas complicarte con mas cosas.

Saludos

Como comente quiero hacerlo sin mascaras!! Gracias de todos modos!! ;)


Cita:
Ahhhh por ahi si, mira solo tienes que agregar estas lineas

Código:

private void FechaTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (Char.IsDigit(e.KeyChar))
{
e.Handled = false;
}
else if (Char.IsControl(e.KeyChar))
{
e.Handled = false;
}
else
{
e.Handled = true;
}

//Esto quiere decir si el largo de tu textbox es igual a 2 o 5 le agrega la barra /
if(FechaTextBox.Length.Equals(2) || FechaTextBox.Length.Equals(5))
FechaTextBox.Text = FechaTextBox.Text.Trim()+"/";

}

Cuentame como te fue

Pues bueno te cuento... eso es lo que quiero!!! :)
pero aii algunos problemas! SI en el dia pongo por ejemplo 43 porque me confundo, y quiero borrar, al borrar el 3 me agrega otra / al final porque el 4 y la barra / que se habia puesto antes son dos caracteres... lo cual la condicion del if se cumple y añade otro otra vez...

Otro problema (solucionado :) ) esuqe el puntero dentro del textBox se va al principio del texto al añadir los caracteres /... lo e arreglado añadiendo esto:


if(FechaTextBox.Text.Length.Equals(2) || FechaTextBox.Text.Length.Equals(5))
FechaTextBox.Text = FechaTextBox.Text.Trim()+"/";
FechaTextBox.Focus();
FechaTextBoxSelect(FechaTextBox4.Text.Length, FechaTextBox4.Text.Length);


POdias ayudarme a corregir el primer problema??


Gracias
  #10 (permalink)  
Antiguo 10/08/2009, 19:30
 
Fecha de Ingreso: febrero-2003
Ubicación: chile
Mensajes: 101
Antigüedad: 21 años, 2 meses
Puntos: 1
Respuesta: TextBox personalizado para fechas c#

hace un if al principo de toda el codigo que tienes

Código:
if(e.KeyChar != (char)Keys.Delete)
{
  ACA TODO LO QUE YA TIENES, y si necesitas poder apretar otro boton lo agregas aca.. pruebalo y me cuentas
}
__________________
s[K]eL
  #11 (permalink)  
Antiguo 11/08/2009, 11:08
 
Fecha de Ingreso: agosto-2009
Mensajes: 33
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: TextBox personalizado para fechas c#

Cita:
Iniciado por skel363 Ver Mensaje
hace un if al principo de toda el codigo que tienes

Código:
if(e.KeyChar != (char)Keys.Delete)
{
  ACA TODO LO QUE YA TIENES, y si necesitas poder apretar otro boton lo agregas aca.. pruebalo y me cuentas
}

Gracias de nuevo!! Pero hay otro problema, esque al hacer eso se desactiva la tecla backspace y por tanto en el caso de que me confunda al introducir los dias, no puedo borrarlos... y cuando escribo la fecha competa (dd/mm/aaaa) puedo borrar asta 4 caracteres consecutivos cualesquiera del texto tel textbox... me explico??

alguna solucion???

gracias... me estas ayudando muxo!!! :)

Última edición por Nasher; 11/08/2009 a las 17:13
  #12 (permalink)  
Antiguo 13/08/2009, 11:31
Avatar de GabrielAizcorbe  
Fecha de Ingreso: mayo-2009
Ubicación: En la luna.
Mensajes: 30
Antigüedad: 15 años
Puntos: 3
Respuesta: TextBox personalizado para fechas c#

No entiendo igual el hecho de estar empecinado en reinventar la rueda cuando las mascaras te lo resuelven fenomenalmente, pero en ultima instancia si insistes y lo quieres hacer bien deberias usar Expresiones Regulares para evaluar todo el tiempo lo que hay en la textbox y asi no tendras ningun problema, incursiona por ese lado, hay cientos de lugares donde explica como usar las RegEx, lo mismo que es bastante complejo pero si lo quieres bien hecho, ahi tienes.

Saludos
  #13 (permalink)  
Antiguo 13/08/2009, 12:06
 
Fecha de Ingreso: agosto-2009
Mensajes: 33
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: TextBox personalizado para fechas c#

Cita:
Iniciado por GabrielAizcorbe Ver Mensaje
No entiendo igual el hecho de estar empecinado en reinventar la rueda cuando las mascaras te lo resuelven fenomenalmente, pero en ultima instancia si insistes y lo quieres hacer bien deberias usar Expresiones Regulares para evaluar todo el tiempo lo que hay en la textbox y asi no tendras ningun problema, incursiona por ese lado, hay cientos de lugares donde explica como usar las RegEx, lo mismo que es bastante complejo pero si lo quieres bien hecho, ahi tienes.

Saludos

Vale, pues voy a probar con expresiones regulares... esque no las entiendo mucho y por eso no las usaba... pero te hare caso... lo voy a intentar..!! Gracias por la respuesta!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:37.