Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Zodiak98 en 13 Julio 2013, 03:52 am



Título: [Pregunta] (C#) ¿Qué significan las variables 'e' y 'sender'?
Publicado por: Zodiak98 en 13 Julio 2013, 03:52 am
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.


Título: Re: [Pregunta] (C#) ¿Qué significan las variables 'e' y 'sender'?
Publicado por: Novlucker en 13 Julio 2013, 04:18 am
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


Título: Re: [Pregunta] (C#) ¿Qué significan las variables 'e' y 'sender'?
Publicado por: Eleкtro en 13 Julio 2013, 05:13 am
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
  1. Public Class Form1
  2.  
  3.    ' Creamos dos objetos de tipo {Button} con algunas propiedades :
  4.  
  5.    Dim WithEvents objeto1 As Button = New Button _
  6.    With {.Name = "Boton1", _
  7.          .AutoSize = True, _
  8.          .Tag = "Botoncito 1", _
  9.          .Text = "Soy el botón 1, púlsame!", _
  10.          .Font = New Font("Microsoft Sans Serif", 16, FontStyle.Bold), _
  11.          .Dock = DockStyle.Top}
  12.  
  13.    Dim WithEvents objeto2 As Button = New Button _
  14.    With {.Name = "Boton2", _
  15.          .AutoSize = True, _
  16.          .Tag = "Botoncito 2", _
  17.          .Text = "Soy el botón 2, púlsame!", _
  18.          .Font = New Font("Microsoft Sans Serif", 16, FontStyle.Bold), _
  19.          .Dock = DockStyle.Bottom}
  20.  
  21.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  22.        ' Asociamos un {evento} de los objetos a un {eventhandler} :
  23.        AddHandler objeto1.MouseDown, AddressOf objeto_Click
  24.        AddHandler objeto2.MouseDown, AddressOf objeto_Click
  25.        ' Añadimos los controles al formulario :
  26.        Me.Controls.Add(objeto1) : Me.Controls.Add(objeto2)
  27.    End Sub
  28.  
  29.    Private Sub objeto_Click(sender As Object, e As MouseEventArgs) ' Handles objeto1.MouseDown, objeto2.MouseDown
  30.  
  31.        ' El objeto que recibe el sender es de tipo {Button}, el sender equivale a uno de nuestros botones :
  32.  
  33.        MsgBox(String.Format("Name: {0}Tag: {1}Text: {2}", _
  34.                             sender.Name & Environment.NewLine, _
  35.                             sender.tag & Environment.NewLine, _
  36.                             sender.Text & Environment.NewLine))
  37.  
  38.        ' Pero en algunos casos querremos convertir el sender al tipo de objeto en cuestión,
  39.        ' por ejemplo en este caso para diferenciar entre un botón y otro :
  40.  
  41.        Dim Boton As Button = CType(sender, Button)
  42.  
  43.        Select Case Boton.Name
  44.            Case "Boton1" ' El botón se llama "Boton1"
  45.                MsgBox("Esto sucede al pulsar el botón: " & Boton.Name)
  46.                ' Código...
  47.            Case "Boton2" ' El botón se llama "Boton2"
  48.                MsgBox("Esto otro sucede al pulsar el botón: " & Boton.Name)
  49.                ' Más código...
  50.        End Select
  51.  
  52.        ' Una muestra de como manejar {e} para el tipo de evento {MouseEventArgs} :
  53.        MsgBox("Pulsaste el botón de tu mouse: " & e.Button.ToString)
  54.  
  55.    End Sub
  56.  
  57. End Class

Saludos.