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

Pequeña duda sobre un objeto de VB.NET

Estas en el tema de Pequeña duda sobre un objeto de VB.NET en el foro de .NET en Foros del Web. Holas gente, "buenos dias" de verano :) La question es que no se realmente de donde sale el objeto que tiene el miembro KeyCode "e.KeyCode", ...
  #1 (permalink)  
Antiguo 05/07/2006, 23:19
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 19 años, 3 meses
Puntos: 2
Pequeña duda sobre un objeto de VB.NET

Holas gente, "buenos dias" de verano :)

La question es que no se realmente de donde sale el objeto que tiene el miembro KeyCode "e.KeyCode", el objeto "e"... deduzco que debe salir por que en los argumentos del metodo del evento se define así con "ByVal e as System.Windows.Forms.KeyEventArgs".

Mi pregunta es: Por que "e" ? de donde sale ese objeto, que significa, es como un alias para "System.Windows.Forms.KeyEventArgs" ?

Muchas gracias de antemano

Código:
Private Sub ListBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ListBox1.KeyDown
    If e.KeyCode = Keys.Delete Then
        With ListBox1
            .Items.Remove(.SelectedItem)
        End With
    End If
End Sub

Última edición por yoguuu; 06/07/2006 a las 00:02
  #2 (permalink)  
Antiguo 06/07/2006, 08:35
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
si te fijas, la funcion al final tiene el Handles ListBox1.KeyDown lo cual se trata de un manejador de evento.. al presionar una tecla se desencadena el evento KeyDown por lo que automaticamente se llama al metodo ListBox1_KeyDown , al suceder esto automaticamente el metodo recibe 2 parametros: el sender de tipo Object (el objeto en el que sucedio el evento) y el objeto e de tipo KeyEventArgs(argumentos del evento key del objeto que desencadeno el evento) propiedades el objeto que desencadeno el evento...

preguntas por que "e", .NET lo pone automatico, sino te gusta el "e" se lo puedes cambiar a otra palabra, la que gustes.... y preguntas que es "e" pues es un objeto con los argumentos del objeto sender....
  #3 (permalink)  
Antiguo 07/07/2006, 17:27
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
Bueno esto es cuestion de que comprendas el uso de parametros de funciones,
e es el nombre de un objeto que crea Windows Form para pasarlo por parametro a la funcion.


Ejemplo:

ByVal e As System.Windows.Forms.KeyEventArgs

e es el nombre de una variable objeto, de esta misma forma se usa en la funcion, solo que:

en el caso de esta variable tu la crearias:
e = new System.Windows.Forms.KeyEventArgs(...)

en el caso de el evento lo crea Window Forms al invocar la funcion:

In Event Key.

OnKeyEvent.Invoke(new System.Windows.Forms.KeyEventArgs(...))

vamos es un ejemplo en realidad no se hace exactamente asi.

lo que si es que es WIndow Forms quien crea ese objeto dinamicamente.

el proceso de invocacion de funciones es muy complejo.

primero muy en la base de Window Forms esta el WndProc o procedimeinto de ventanas.

es este el que se encarga de capturar los eventos del SO.

long __stdcall WndProc(.message.)
{
switch(message)
{
case WM_CREATE:
case W__KEYDOWN:
....
default:
}
}

bueno mas o menos , dentro de cada seccion de el selector switch, se llama a una funcion o a las funciones que se nombran mas o menos :
WmKeyDown(...)
WmClose(...)
etc....

a estas funciones se les pasa como Message es decir el mensaje del Sistema.
(La estructura Message tiene miembros : Msg, WParam, LParam etc. Datos de evento nativos).

estas funcines a su vez llaman a las funciones que se nombran:

OnKeyDown(...
OnClose(...
OnEtc...

es a estas funciones se les pasa un objeto EventARgs que se crea dentro de las funciones Wm(Las anteriores.)

Esto se hace en WmClose(Message)
{

FormClosedEventArgs e = new FormClosedEventArgs(CloseReason.MdiFormClosing);

foreach (Form form in this.MdiChildren)
{
if (form.IsHandleCreated)
{
form.OnClosed(e);
form.OnFormClosed(e);
}
}
}

ya con el EventArg se empiezan a llamar o Invocar a los eventos de usuario o a los de Window Forms que se usan para configurar los Objetos graficos.
esta invocacion se realiza dentro de los OnClose, OnKeyDown, etc...

bueno todo esto para explicar que e es un objeto de tipo EventArgs que se crea por Window Forms con los datos del Sistema.

el cual se especializa segun la informacion a llevar como la tecla precionada, las coordenadas del raton, tamaño de la ventana etc.


Saludos.

Última edición por Nivel7; 07/07/2006 a las 17:39
  #4 (permalink)  
Antiguo 07/07/2006, 20:57
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
La question es que no se realmente de donde sale el objeto que tiene el miembro KeyCode "e.KeyCode", el objeto "e"...
Simplemente "e" es una variable que como dice Stream el mismo VS lo coloca por default, y obviamente el ListBox, como cualquier objeto tiene eventos asociados y en este caso es KeyDown, donde KeyEventArgs es una clase que es heredada de EventArgs para darle el mismo comportamiento del evento, pero con su propia implementacion que en este caso tiene propiedades como KeyCode, Alt, enumeradores, etc.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
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 21:41.