Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Eventos en C# (Event)

104 views
Skip to first unread message

Carla Rincon

unread,
Oct 26, 2007, 8:32:09 AM10/26/07
to
He visto que C# tiene un tipo llamado 'Event' significando que se pueden
definir eventos. Mi duda es si esos eventos funcionan similar a los
eventos predeterminados como Load, Click, etc.
O de no ser asi, que utilidad tiene definir esos eventos ('Event') en un
programa?

Carla Rincon


Alberto Poblacion

unread,
Oct 26, 2007, 8:39:14 AM10/26/07
to
"Carla Rincon" <_> wrote in message
news:ufR%23Cx8FI...@TK2MSFTNGP03.phx.gbl...

> He visto que C# tiene un tipo llamado 'Event' significando que se pueden
> definir eventos. Mi duda es si esos eventos funcionan similar a los
> eventos predeterminados como Load, Click, etc.

Por supuesto que funcionan de forma similar a los que llamas
"predeterminados". De hecho, los componentes tales como el Form o el Button
que disparan dichos eventos, son en realidad clases programadas con C# y que
por dentro tienen el evento definido como "event". Puedes hacer exactamente
lo mismo en tus clases, a estos efectos no difieren nada de las que vienen
ya compiladas dentro de las DLLs de .Net.

Carla Rincon

unread,
Oct 26, 2007, 9:04:56 AM10/26/07
to
Muy interesante eso.

Muchas gracias

Carla Rincon


"Alberto Poblacion" <earthling-quitae...@poblacion.org>
escribió en el mensaje news:OD7C%2308FI...@TK2MSFTNGP06.phx.gbl...

Guillermo 'guille'

unread,
Oct 26, 2007, 1:16:34 PM10/26/07
to
Échale un vistacillo al curso de C# 2005 de Desarrolla con MSDN:
http://www.desarrollaconmsdn.com/msdn/Cursos/Curso_Introduccion_a_.NET_con_CSharp/Modulo2/02_04.htm
seguro que te aclara más las cosas, je, je...

--
Nos vemos
Guillermo
---
Microsoft MVP Visual Basic desde 1997
Tus consultas en los foros del Guille: http://foros.elguille.info/


"Carla Rincon" <_> wrote in message
news:ufR%23Cx8FI...@TK2MSFTNGP03.phx.gbl...

Carla Rincon

unread,
Oct 26, 2007, 9:12:16 PM10/26/07
to
Muy bueno el curso y ya lo entiendo mejor. Lo aprovechare para muchas otras
cosas que deseo aprender.

Muchas gracias Guillermo.


Carla Rincon

"Guillermo 'guille'" <men...@en.elguille.info> escribió en el mensaje
news:DDC119D5-0937-4C77...@microsoft.com...

principiante

unread,
Oct 29, 2007, 4:59:17 PM10/29/07
to
Aunque sí hay una diferencia y es que estos eventos de usuario deben ser
llamados o 'generados' explícitamente. Los 'predeterminados' son
automáticos, como es lógico (click, textchanged, enter, etc.).


Jose TH


"Alberto Poblacion" <earthling-quitae...@poblacion.org> wrote
in message news:OD7C%2308FI...@TK2MSFTNGP06.phx.gbl...

Alberto Poblacion

unread,
Oct 30, 2007, 3:11:19 AM10/30/07
to
"principiante" <jose...@gmail.es> wrote in message
news:%2364HV6m...@TK2MSFTNGP03.phx.gbl...

> Aunque sí hay una diferencia y es que estos eventos de usuario deben ser
> llamados o 'generados' explícitamente. Los 'predeterminados' son
> automáticos, como es lógico (click, textchanged, enter, etc.).

No, no es cierto. El programador de Microsoft que programó la clase
Button y dentro del Button creó el evento Click, tuvo que llamarlo o
'generarlo', como tú dices, desde su código en C#, exactamente de la misma
forma que tendrías que hacer tú en una clase tuya en la que declarases un
evento. Y tu clase una vez compilada, vista desde fuera, presentará a
quienes la usen un evento exactamente igual de automático que los que llamas
"predeterminados". No hay diferencia ninguna.

Octavio Hernandez

unread,
Oct 30, 2007, 5:46:20 AM10/30/07
to
Hola,

Solo para apoyar lo que dice Alberto: no hay NINGUNA diferencia entre esas
dos "clases" de eventos.
Si la hubiera, el sistema no sería "honesto": habría cosas que él hace y que
tú como programador no podrías lograr.
Desconfía de un sistema así cuando lo veas.

Saludos - Octavio

"principiante" <jose...@gmail.es> wrote in message
news:%2364HV6m...@TK2MSFTNGP03.phx.gbl...

RFOG [MVP C++]

unread,
Oct 30, 2007, 5:57:32 AM10/30/07
to
Claro.

La diferencia estriba en que los eventos que ya vienen creados los crea el
.NET en sus tripas a partir del bucle de mensajes de la ventana, y los
nuestros pues no porque en principio no tenemos acceso en .NET a dicho
bucle (que sí tenemos en parte).

El amigo Nishant Sivakumar en su "C++/CLI in action" explica cómo es el
formato de esos eventos y cómo crear nuestros propios eventos "a la .NET",
aunque no profundiza mucho.

--
Microsoft Visual C++ MVP
========================
Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
========================================
Dios existe; pero no tiene ninguna prisa de hacerlo saber.
-- Leon Tolstoi. (1828-1910) Escritor ruso.

principiante

unread,
Oct 30, 2007, 10:28:31 PM10/30/07
to
>
> No, no es cierto. El programador de Microsoft que programó la clase
> Button y dentro del Button creó el evento Click, tuvo que llamarlo o
> 'generarlo', como tú dices, desde su código en C#, exactamente de la misma
> forma que tendrías que hacer tú en una clase tuya en la que declarases un
> evento.

Ok pero me intriga, no sería eso a un muy bajo nivel ? O puedo ver donde
justamente se genera el evento click? No es transparente para mi? Tengo
algun control sobre el ?


Jose TH

principiante

unread,
Oct 30, 2007, 10:31:11 PM10/30/07
to
Pues, al nivel de aplicacion, sí hay diferencia entonces... o no ?
oops... ya me confundí :(

Jose TH


"RFOG [MVP C++]" <zephryn...@quitame.gmail.com> escribió en el mensaje
news:op.t0z8l6x7pza9bi@red-mars...

RFOG [MVP C++]

unread,
Oct 31, 2007, 4:58:12 AM10/31/07
to
No, no hay ninguna... si los usas como hace el .NET.

Es decir, los eventos que dispara y consume el net son eventos normales y
corrientes, pero están basados en una jerarquía de clases bastante liosa;
es decir, no son una instancia de un método declarado como "event", sino
que pertencen a una estructura de clases, etc, etc. Pero a la hora de
lanzarlo se hace de la misma forma.

Esperate a esta tarde o mañana y pongo una entrada en mi blog sobre el
tema (sacándolo del libro que he comentado).

Respecto a lo que comentas en tu respuesta a Alberto, el proceso es más o
menos este (ojo que lo digo de memoria):

cada ventana tiene un método que se llama "bucle de mensajes", que es un
callback que se instala al declarar una nueva ventana y que windows llama
cada vez que se prodiza un mensaje (click, doble click, arrastrar, pulsar
una tecla, pintado...). En esa función hay un case gigantesco (si se hace
bien es un array de punteros a funciones) que va cogiendo y procesando
cada mensaje. Por ejemplo:

case WM_CLICK:
//código
break;
case WM_DBLCLICK:
...

Ese código mira qué ventana ha generado el evento a través de su handle,
busca la clase que se corresponde a esa ventana, y dispara el evento
correspondiente... si está definido o asignado. En .NET ese evento es un
evento normal y corriente, pero se definen una serie de reglas por diseño
y porque en cierto modo simplifican y ponen orden en el sistema de paso de
mensajes de Windows, que es bastante caótico.

Y hay componentes .NET que no tienen bucle de mensajes de windows (no sé
cómo lo harán, porque en W. todo es una ventana que puede tener su bucle
de mensajes), pero el principio es el mismo: cuando se reciba un click se
lanza tal evento.

principiante

unread,
Oct 31, 2007, 8:38:17 AM10/31/07
to
Cuando yo hablaba de que esos eventos predeterminados son 'automáticos' lo
que he querido decir es que no tengo que llamarlos yo explícitamente a nivel
de mi aplicación ya que como muy bien tu explicas su ocurrencia, en terminos
practicos, me es transparente. O sea, como si fuesen 'Automáticos' para los
fines que se trata. Que en las clases base (ventanas) ocurra la misma idea
pero basada en los mensajes basicos de windows, ok, pero me es transparente
ya que sobre la ocurrencia de estos mensajes no tenemos control. .NET solo
los identifica y les da forma algo mas amigable, segun lo que explicas.

Muchas gracias por la detallada explicación, estare pendiente para
revisarlo con mas calma en tu blog.


Jose TH

"RFOG [MVP C++]" <zephryn...@quitame.gmail.com> escribió en el mensaje

news:op.t010jabgpza9bi@red-mars...

RFOG [MVP C++]

unread,
Oct 31, 2007, 12:40:01 PM10/31/07
to
Pues ya la tienes:
http://geeks.ms/blogs/rfog/archive/2007/10/31/eventos-quot-a-la-quot-net.aspx

Como estoy teniendo serios problemas para que el código salga de forma
mínimamente aceptable en el blog, dentro de la entrada se puede bajar un
PDF que contiene lo que debería haber sido la entrada en sí.

principiante

unread,
Oct 31, 2007, 8:40:47 PM10/31/07
to

Muchas gracias por la importante aportación que has dado a este tema.

Saludos

Jose TH


"RFOG [MVP C++]" <zephryn...@quitame.gmail.com> escribió en el mensaje

news:op.t02lwzgepza9bi@red-mars...

RFOG [MVP C++]

unread,
Nov 1, 2007, 5:45:56 AM11/1/07
to
Pues todavía se me han escapado algunas cosas... Estate atento.

banty

unread,
Nov 8, 2007, 5:10:38 AM11/8/07
to

"principiante" <nad...@denada.com> wrote in message
news:O4sL9W2G...@TK2MSFTNGP04.phx.gbl...
0 new messages