[Pregunta] (C#) ¿Qué significan las variables 'e' y 'sender'?

Iniciado por Zodiak98, 13 Julio 2013, 03:52 AM

0 Miembros y 1 Visitante están viendo este tema.

Zodiak98

Bueno al empezar a codear un objeto o la forma o x cosa siempre te colocan 2 variables por default qué son 'e' y 'sender'. Pero la verdad no sé para qué son, alguien me explica?

1 - ¿Qué son exactamente?
2 - ¿De qué servirían?

Saludos.

Novlucker

El sender es quién disparó el evento, por ejemplo, si utilizas un mismo método a para el evento click de muchos botones diferentes, tal vez te interesa dentro de ese método identificar al botón que disparó el click.

El e es para los argumentos que reciba ese método.

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Eleкtro

#2
Para añadir algo de información a la respuesta de Novlucker he hecho un ejemplo práctico:

EDITO: Justo ahora leí que era para C#, sorry, pero igual te puede servir.

Código (vbnet) [Seleccionar]
Public Class Form1

   ' Creamos dos objetos de tipo {Button} con algunas propiedades :

   Dim WithEvents objeto1 As Button = New Button _
   With {.Name = "Boton1", _
         .AutoSize = True, _
         .Tag = "Botoncito 1", _
         .Text = "Soy el botón 1, púlsame!", _
         .Font = New Font("Microsoft Sans Serif", 16, FontStyle.Bold), _
         .Dock = DockStyle.Top}

   Dim WithEvents objeto2 As Button = New Button _
   With {.Name = "Boton2", _
         .AutoSize = True, _
         .Tag = "Botoncito 2", _
         .Text = "Soy el botón 2, púlsame!", _
         .Font = New Font("Microsoft Sans Serif", 16, FontStyle.Bold), _
         .Dock = DockStyle.Bottom}

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       ' Asociamos un {evento} de los objetos a un {eventhandler} :
       AddHandler objeto1.MouseDown, AddressOf objeto_Click
       AddHandler objeto2.MouseDown, AddressOf objeto_Click
       ' Añadimos los controles al formulario :
       Me.Controls.Add(objeto1) : Me.Controls.Add(objeto2)
   End Sub

   Private Sub objeto_Click(sender As Object, e As MouseEventArgs) ' Handles objeto1.MouseDown, objeto2.MouseDown

       ' El objeto que recibe el sender es de tipo {Button}, el sender equivale a uno de nuestros botones :

       MsgBox(String.Format("Name: {0}Tag: {1}Text: {2}", _
                            sender.Name & Environment.NewLine, _
                            sender.tag & Environment.NewLine, _
                            sender.Text & Environment.NewLine))

       ' Pero en algunos casos querremos convertir el sender al tipo de objeto en cuestión,
       ' por ejemplo en este caso para diferenciar entre un botón y otro :

       Dim Boton As Button = CType(sender, Button)

       Select Case Boton.Name
           Case "Boton1" ' El botón se llama "Boton1"
               MsgBox("Esto sucede al pulsar el botón: " & Boton.Name)
               ' Código...
           Case "Boton2" ' El botón se llama "Boton2"
               MsgBox("Esto otro sucede al pulsar el botón: " & Boton.Name)
               ' Más código...
       End Select

       ' Una muestra de como manejar {e} para el tipo de evento {MouseEventArgs} :
       MsgBox("Pulsaste el botón de tu mouse: " & e.Button.ToString)

   End Sub

End Class


Saludos.