Problemas Con Herencia

07/11/2006 - 17:32 por Carmelo | Informe spam
Tengo dos Formularios A y B donde B es hijo de A. Y mi problema es que quiero
acceder a elementos de A cuando este activado B.

Por ejemplo en B tengo un datagridview y cuando le de a dobleclick tendria
que rellenarse textbox en el formulario A. Esta es mi problema.

Gracias

Preguntas similare

Leer las respuestas

#1 Guillermo guille
07/11/2006 - 18:02 | Informe spam
Hola,

Por defecto en C# todos los controles se declaran como "private", por tanto
si necesitas acceder a ellos desde una clase derivada (B se deriva de A),
puedes declararlo como protected, o mejor aún, crear una propiedad protegida
que te permita el acceso a ese control en cuestión, así no expones más cosas
de las que debes exponer.

Nos vemos
Guillermo

El Guille cumple 10 años
http://aniversario.elguille.info/
"Carmelo" escribió en el mensaje
news:
Tengo dos Formularios A y B donde B es hijo de A. Y mi problema es que
quiero
acceder a elementos de A cuando este activado B.

Por ejemplo en B tengo un datagridview y cuando le de a dobleclick tendria
que rellenarse textbox en el formulario A. Esta es mi problema.

Gracias
Respuesta Responder a este mensaje
#2 Carmelo
07/11/2006 - 18:55 | Informe spam
No te entiendo cuando me dices que me cree una propiedad protegida me podrias
poner algun ejemplo.

"Guillermo 'guille'" wrote:

Hola,

Por defecto en C# todos los controles se declaran como "private", por tanto
si necesitas acceder a ellos desde una clase derivada (B se deriva de A),
puedes declararlo como protected, o mejor aún, crear una propiedad protegida
que te permita el acceso a ese control en cuestión, así no expones más cosas
de las que debes exponer.

Nos vemos
Guillermo

El Guille cumple 10 años
http://aniversario.elguille.info/
"Carmelo" escribió en el mensaje
news:
> Tengo dos Formularios A y B donde B es hijo de A. Y mi problema es que
> quiero
> acceder a elementos de A cuando este activado B.
>
> Por ejemplo en B tengo un datagridview y cuando le de a dobleclick tendria
> que rellenarse textbox en el formulario A. Esta es mi problema.
>
> Gracias



Respuesta Responder a este mensaje
#3 Alberto Poblacion
07/11/2006 - 22:46 | Informe spam
"Carmelo" wrote in message
news:
No te entiendo cuando me dices que me cree una propiedad protegida me
podrias
poner algun ejemplo.



Por ejemplo, supongamos que en el formulario A tienes un textbox que
quieres manipular desde B, y de forma predeterminada su declaración es asi:
private TextBox textbox1;

Lo más sencillo es hacerlo accesible desde B cambiando el private por
protected:
protected TextBox textbox1;

Pero la solución más elegante que te proponía Guillermo consiste dejarlo
como private y crear una propiedad protegida que es la que usas desde B:

protected string MiTexto
{
get { return textbox1.Text; }
set { textbox1.Text = value; }
}

Ahora, desde el formulario B (que hereda de A), cuando quieres cambiar
el textbox, solo tienes que poner:
MiTexto = "Nuevo texto";
Respuesta Responder a este mensaje
#4 Carmelo
07/11/2006 - 23:48 | Informe spam
Y si no hubiera herencia entre el formularia A y B como modificaria cosas del
formulario desde el Codigo de B.
Te digo lo de sin herencia porque al probarlo cuando he dicho que la clase B
es hija de A en vista diseño me ha metido todos los elementos de A en B y eso
yo no lo quiero

"Alberto Poblacion" wrote:

"Carmelo" wrote in message
news:
> No te entiendo cuando me dices que me cree una propiedad protegida me
> podrias
> poner algun ejemplo.

Por ejemplo, supongamos que en el formulario A tienes un textbox que
quieres manipular desde B, y de forma predeterminada su declaración es asi:
private TextBox textbox1;

Lo más sencillo es hacerlo accesible desde B cambiando el private por
protected:
protected TextBox textbox1;

Pero la solución más elegante que te proponía Guillermo consiste dejarlo
como private y crear una propiedad protegida que es la que usas desde B:

protected string MiTexto
{
get { return textbox1.Text; }
set { textbox1.Text = value; }
}

Ahora, desde el formulario B (que hereda de A), cuando quieres cambiar
el textbox, solo tienes que poner:
MiTexto = "Nuevo texto";




Respuesta Responder a este mensaje
#5 sharezade
08/11/2006 - 08:18 | Informe spam
Tienes que sobreescribir partes de la clase padre.
Investiga sobre la palabra clave override.

Si tu clase padre A tiene una función llamada func y tu clase B hereda
de A, en un principio al crear una instancia de B usará la función
func de A. Si quieres que B posea su propia función func tendrás que
añadir al código de B:

protected override void func ()
{

}
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida