TextBox

04/03/2010 - 18:53 por Limberg | Informe spam
Cual sería el equivalente del LOAD de los FORMS, en el control TextBox

Saludos,
Limberg.



__________ Information from ESET NOD32 Antivirus, version of virus signature database 4915 (20100304) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

Preguntas similare

Leer las respuestas

#6 SoftJaén
05/03/2010 - 10:30 | Informe spam
"Limberg" escribió:

Tengo una clase TextBoxExt, basada en TextBox.
En ella tengo una propiedad "TipoDeDato"
Deseo asignarle a esta propiedad = "N12.2" o "N16.5", por asi
decir, esto desde el load del FORM.
Ahora, dentro de la clase TextBoxExt, quiero separar la parte
entera de la parte decimal en otras propiedades.

No puedo hacerlo en su constructor, ya que el valor de la
propiedad es nulo.Por eso deseo hacerlo en metodo o evento
posterior al constructor.



Hola:

Lo mismo no necesitas un evento. Si tu intención es separar la parte decimal
de la entera cuando asignas el valor de la propiedad Text del control,
sobrescribe en la clase derivada la propiedad Text de la clase TextBox:

class TextBoxExt: TextBox
{
private string m_parteEntera;
private string m_parteDecimal;

public override string Text
{
get
{
return base.Text;
}
set
{
base.Text = value;

if (value == string.Empty)
{
// Es una cadena de longitud cero
m_parteEntera = string.Empty;
m_parteDecimal = string.Empty;
return;
}

// Comprobamos si existe el punto
//
int n = value.IndexOf('.');

if (n == -1)
{
// No hay parte decimal
//
m_parteEntera = value;
m_parteDecimal = string.Empty;
}
else
{
m_parteEntera = value.Substring(0, n);
m_parteDecimal = value.Substring(n + 1, value.Length - n - 1);
}
int x = 0;

}
}
}

Si por ejemplo has asignado el valor "N12.2" a la propiedad Text, la parte
entera será "N12" y la parte decimal "2". Si no es así, modifica los valores
del método Substring.

Un saludo

Enrique Martínez
[MS MVP-VB]
Respuesta Responder a este mensaje
#7 SoftJaén
05/03/2010 - 10:31 | Informe spam
"Leandro Tuttini" escribió:

en realidad el textbox no tiene un evento load o similar
no lo tiene porque este control no puede actuar como container
de otros controles



Leandro, ¿estás seguro que el control TextBox no puede actuar como
"container" de otros controles? :-)

La siguiente clase añadirá un control Label dentro de un control TextBox:

using System;
using System.Drawing;
using System.Windows.Forms;

class TextBoxExt: TextBox
{
private Label m_label;

public TextBoxExt() : base()
{
m_label = new Label();

Size = new Size(185, 23);

m_label.ForeColor = SystemColors.AppWorkspace;
m_label.Location = new Point(2, 0);

// Añadimos el control Label especificando
// su propiedad Parent.
//
m_label.Parent = this;

m_label.Click += new System.EventHandler(LabelOnClick);

}

protected override void OnControlAdded(ControlEventArgs e)
{
// Referenciamos el control añadido
//
Control ctrl = e.Control;

// Establecemos el valor de su propiedad Text
//
ctrl.Text = "Contraseña";

base.OnControlAdded(e);
}

protected override void OnEnter(EventArgs e)
{
if (m_label.Visible)
{
LabelOnClick(m_label, e);
}
base.OnEnter(e);
}

protected override void OnLeave(EventArgs e)
{
m_label.Visible = (Text == String.Empty);
base.OnLeave(e);
}

protected override void OnResize(EventArgs e)
{
m_label.Size = Size;
base.OnResize(e);
}

protected override void OnTextChanged(EventArgs e)
{
m_label.Visible = (Text == string.Empty);
base.OnTextChanged(e);
}

private void LabelOnClick(object sender, EventArgs e)
{
Focus();
}

}

¿Que no deseas utilizar la propiedad Parent? ¡Bueno! Pues añadiríamos el
control Label a la colección Controls del control TextBox de la siguiente
manera:

Controls.Add(m_label);

De una o de otra manera, podrás observar que se ejecuta el método
«OnControlAdded», es decir, cuando se añade un control a la colección
Controls del control TextBox. :-)

Un saludo

Enrique Martínez
[MS MVP - VB]
Respuesta Responder a este mensaje
#8 César
05/03/2010 - 22:19 | Informe spam
Creo que si puede servir como container. De hecho tiene una propiedad
Controls. Que no se use mucho es otra cosa.


"Leandro Tuttini" escribió en el mensaje
news:
hola

en realidad el textbox no tiene un evento load o similar
no lo tiene porque este control no puede actuar como container de
otros controles

por ahi si explicas un poco mas lo quee stas queriendo lograr se
aclararia la pregunta

saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida