Las clases

03/02/2005 - 19:06 por Manuel | Informe spam
Hola, saludos al foro

Estoy con el tema de las clases (aprendiendo, claro) llevo
bastante bien lo de crear propiedades, metodos y eventos
pero tengo un par de dudas que me gustaria exponer:

He creado una clase que crea, en tiempo de ejecucion, un
objeto label en un formulario. La cuestion es que no se
como crear un parametro en la clase para especificar el
control contenedor de la clase.

Por ejemplo, quiero que mi clase (label) se cree en el
form1 (que esta fuera de la clase), ¿que tipo de dato sera
esa propiedad y como la escribo?


por otra parte, una vez escrita la clase declaro una
instancia de la misma en un formulario así:

private withevenst lbl as miclase_label


lbl = new miclase_label
...

.. y para controlar los eventos ..
private sub lbl_click () handles lbl.click

..hasta aqui todo correcto, pero.. si yo quiero tener
muchas clases miclase_label en el formulario ¿tengo que
declarar una variable withevents por cada clase? ¿y si a
priori no se la cantidad que voy a necesitar?

espero haberme explicado
perdon por el ladrillo y gracias
 

Leer las respuestas

#1 Edgar Contreras
03/02/2005 - 19:35 | Informe spam
Que tal Manuel,

En cuanto al tipo de Propiedad se me ocurre que la hagas del tipo Object, ya
que a final de cuentas todas las clases de .NET heredan de esta, por lo que
la asignacion al final podría realizarse sin problemas.

En lo que respecta a los eventos, puedes también atrapar los eventos
mediante el AddHandler, por ejemplo:

<Codigo ON>
Class MiClase
Event RegistrarAccion (ByVal nombreAccion as String)
.
.
.
Sub AbrirArchivo()
RaiseEvent RegistrarAccion("AbrirArchivo")
End Sub

Sub CerrarArchivo()
RaiseEvent RegistrarAccion("CerrarArchivo")
End Sub

End Class

'En tu formulario, modulo, o donde quieras crear los objetos, puedes agregar
algo como
dim miObj as MiClase

Sub AgregaHandlerDeEventos()
AddHandler miObj.RegistrarAccion, AddressOf RegistroDeAccionesMiClase
.
.
.
'Provocamos un suceso
miObj.AbrirArchivo()
miObj.CerrarArchivo()
End Sub

Sub RegistroDeAccionesMiClase(ByVal nombreAccion as String)
Console.WriteLine("Evento RegistrarAccion: " & nombreAccion)
End Sub

'Quitamos la referencia al final
Sub QuitaHandlerDeEventos()
RemoveHandler miObj.RegistrarAccion, AddressOf RegistroDeAccionesMiClase
End Sub

<Codigo OFF>

Espero que te ayude.


Saludos,

Edgar Contreras


[Conectado desde Tijuana, B.C. México]

DISCLAIMER: La información es presentada como es, sin ninguna
responsabilidad, sin garantía alguna y no otorga
derecho alguno.



"Manuel" wrote in message
news:000f01c50a1b$0909a930$
Hola, saludos al foro

Estoy con el tema de las clases (aprendiendo, claro) llevo
bastante bien lo de crear propiedades, metodos y eventos
pero tengo un par de dudas que me gustaria exponer:

He creado una clase que crea, en tiempo de ejecucion, un
objeto label en un formulario. La cuestion es que no se
como crear un parametro en la clase para especificar el
control contenedor de la clase.

Por ejemplo, quiero que mi clase (label) se cree en el
form1 (que esta fuera de la clase), ¿que tipo de dato sera
esa propiedad y como la escribo?


por otra parte, una vez escrita la clase declaro una
instancia de la misma en un formulario así:

private withevenst lbl as miclase_label


lbl = new miclase_label
...

.. y para controlar los eventos ..
private sub lbl_click () handles lbl.click

..hasta aqui todo correcto, pero.. si yo quiero tener
muchas clases miclase_label en el formulario ¿tengo que
declarar una variable withevents por cada clase? ¿y si a
priori no se la cantidad que voy a necesitar?

espero haberme explicado
perdon por el ladrillo y gracias

Preguntas similares