Validando control solo si hay cambio

11/05/2008 - 18:15 por Guillermo Rojas | Informe spam
En un textbox quiero que cuando el usuario digite algo y le de a TAB me haga
un proceso. Pero quiero que lo haga solamente si el usuario ha modificado el
valor.
En que evento debo hacerlo ?
 

Leer las respuestas

#1 Luis Miguel Blanco
13/05/2008 - 14:32 | Informe spam
Hola Guillermo

Puedes utilizar de forma combinada los eventos GotFocus y LostFocus, además
de mantener una variable con el valor original del textbox, que te permita
comprobar al salir del foco del control si ha cambiado su valor.

En el siguiente ejemplo declaramos con ámbito de clase una variable a la que
asignaremos el valor del textbox cuando entremos en el mismo en modo de
edición, es decir, cuando el control obtenga el foco en el evento GotFocus.
En el manipulador del evento GotFocus, asignamos el valor original que tiene
el textbox a la variable, y cuando el usuario pase a otro control pulsando
TAB, se producirá el evento LostFocus, donde comprobamos si el valor actual
del textbox es igual al que tenía cuando entramos en el mismo, y en el caso
de que haya cambiado, llamamos a un método para ejecutar un determinado
proceso.

//-
public partial class Form1 : Form
{
string sTextoOriginal=string.Empty;

public Form1()
{
InitializeComponent();

this.textBox2.GotFocus += new EventHandler(textBox2_GotFocus);
this.textBox2.LostFocus += new EventHandler(textBox2_LostFocus);
}

void textBox2_GotFocus(object sender, EventArgs e)
{
sTextoOriginal = this.textBox2.Text;
}

void textBox2_LostFocus(object sender, EventArgs e)
{
if (sTextoOriginal != this.textBox2.Text)
{
Proceso();
}
}

void Proceso()
{
MessageBox.Show("Realizar proceso");
}
}
//-

Espero que te sea de utilidad.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
http://geeks.ms/blogs/lmblanco/


"Guillermo Rojas" wrote:

En un textbox quiero que cuando el usuario digite algo y le de a TAB me haga
un proceso. Pero quiero que lo haga solamente si el usuario ha modificado el
valor.
En que evento debo hacerlo ?



Preguntas similares