Eventos en Clase

11/09/2009 - 17:46 por Manolo | Informe spam
Hola a todos,

hace poco me respondió Alberto Población una duda sobre los eventos en las
clases, pero me da error. Para los formularios funciona bien, pero no para
una clase que se encuentra en otro proyecto al que se hace referencia.

Me da el siguiente error: " El token '+=' no es válido en una clase,
estructura o declaración de miembro de interfaz.".

El Código que utilizo es el siguiente:
En la Clase:
public delegate void ErrorDLLAccDatos(string Result);
public event ErrorDLLAccDatos ErrorDLL;

para generar el evento:
ErrorDLL(ex.Message);

en el formulario declaro la variable con el evento, y es ahí donde me da
el error:
private DLLAccDatos.AccDatosFidelizacion DLLAccDatosFIDELIZACION =
new DLLAccDatos.AccDatosFidelizacion();
DLLAccDatosFIDELIZACION.ErrorDLL += CalcResultado;

Espero me halla explicado bien.
Ayúdenme por favor, lo necesito con urgencia.

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
11/09/2009 - 18:45 | Informe spam
"Manolo" wrote in message
news:
Me da el siguiente error: " El token '+=' no es válido en una clase,
estructura o declaración de miembro de interfaz.".
[...]
en el formulario declaro la variable con el evento, y es ahí donde me
da el error:
private DLLAccDatos.AccDatosFidelizacion DLLAccDatosFIDELIZACION =
new DLLAccDatos.AccDatosFidelizacion();
DLLAccDatosFIDELIZACION.ErrorDLL += CalcResultado;



El "+=" es una operación ejecutable, no vale para ponerlo a nivel de
clase junto con las variables. Eso significa que la sentencia
DLLAccDatosFIDELIZACION.ErrorDLL += CalcResultado;
tienes que meterla dentro de un método (por ejemplo, en el Form_Load, o en
el constructor del formulario).

Las conexiones de eventos que hace automáticamente el diseñador de
formularios de Visual Studio se generan precisamente asi: la sentencia con
el "+=" está dentro de una subrutina llamada InitializeComponent que a su
vez se llama desde el constructor del formulario.
Respuesta Responder a este mensaje
#2 Manolo
13/09/2009 - 02:39 | Informe spam
Gracias Alberto, me ha funcionado perfectamente.

Solo 1 pregunta más: Como puede salir de la Aplicación desde un DLL.

Un saludo. Gracias de nuevo.


"Alberto Poblacion"
escribió en el mensaje de noticias:
"Manolo" wrote in message
news:
Me da el siguiente error: " El token '+=' no es válido en una clase,
estructura o declaración de miembro de interfaz.".
[...]
en el formulario declaro la variable con el evento, y es ahí donde me
da el error:
private DLLAccDatos.AccDatosFidelizacion DLLAccDatosFIDELIZACION =
new DLLAccDatos.AccDatosFidelizacion();
DLLAccDatosFIDELIZACION.ErrorDLL += CalcResultado;



El "+=" es una operación ejecutable, no vale para ponerlo a nivel de
clase junto con las variables. Eso significa que la sentencia
DLLAccDatosFIDELIZACION.ErrorDLL += CalcResultado;
tienes que meterla dentro de un método (por ejemplo, en el Form_Load, o en
el constructor del formulario).

Las conexiones de eventos que hace automáticamente el diseñador de
formularios de Visual Studio se generan precisamente asi: la sentencia con
el "+=" está dentro de una subrutina llamada InitializeComponent que a su
vez se llama desde el constructor del formulario.

Respuesta Responder a este mensaje
#3 Alberto Poblacion
13/09/2009 - 09:50 | Informe spam
"Manolo" wrote in message
news:%
Gracias Alberto, me ha funcionado perfectamente.

Solo 1 pregunta más: Como puede salir de la Aplicación desde un DLL.



Lo ideal sería que la DLL devolviera un resultado al programa llamante
que signifique "hay que salir de la aplicación", y que el llamante cierre
todo ordenadamente y salga de forma natural.

Si eso no es posible, puedes ponerle a la DLL una referencia a
System.Windows.Forms (suponiendo que el programa es una aplicación de
WinForms), si no la tiene ya, y llamar a Application.Exit.

Y si con todo eso no basta, y quieres matar la aplicación a lo bestia,
puedes usar P/Invoke para llamar a la API ExitProcess:

[System.Runtime.InteropServices.DllImport("kernel32")]
private static extern void ExitProcess(uint uExitCode);
...
ExitProcess(0);
Respuesta Responder a este mensaje
#4 Manolo
13/09/2009 - 20:46 | Informe spam
Gracias de nuevo Alberto, eres el mejor.

Alberto for ever & ever.




"Alberto Poblacion"
escribió en el mensaje de noticias:#
"Manolo" wrote in message
news:%
Gracias Alberto, me ha funcionado perfectamente.

Solo 1 pregunta más: Como puede salir de la Aplicación desde un DLL.



Lo ideal sería que la DLL devolviera un resultado al programa llamante
que signifique "hay que salir de la aplicación", y que el llamante cierre
todo ordenadamente y salga de forma natural.

Si eso no es posible, puedes ponerle a la DLL una referencia a
System.Windows.Forms (suponiendo que el programa es una aplicación de
WinForms), si no la tiene ya, y llamar a Application.Exit.

Y si con todo eso no basta, y quieres matar la aplicación a lo bestia,
puedes usar P/Invoke para llamar a la API ExitProcess:

[System.Runtime.InteropServices.DllImport("kernel32")]
private static extern void ExitProcess(uint uExitCode);
...
ExitProcess(0);

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida