user controls y sus constructores

01/08/2006 - 16:18 por Alejandro González | Informe spam
Hola
Tengo este problema:
Creo un user control con un constructor que recibe varios parametros.
Tambien creo el constructor por defecto, asi pudo agregar el control a un
formularion en la vista de diseño


Porque no funciona esto?
(el constructor por defecto fue llamado por InitializeComponent())
private void Form1_Load(object sender, System.EventArgs e){
this.userControl1 = new UserControl("use this parameter");
}

Luego de esta llamada a mi constructor, puedo ver en debug que todo esta
bien, el userControl1 tiene las propiedades que deberia tener pero, el
formulario sigue desplegando el userControl1 creado sin parametros

Gracias

Preguntas similare

Leer las respuestas

#1 Pedro Rivera
02/08/2006 - 09:13 | Informe spam
Que tal Alejandro.

El asunto es que UserControl1 no es el control que agregaste al formulario,
sino una variable que "apunta" al control que agregaste al formulario.

Cuando tu realizas la siguiente llamada:

this.UserControl1=new UserControl("use this parameter");

Lo que estas haciendo es quitarle el apuntador al control que agregaste al
formulario y apuntar con ella hacia otra instancia de la misma clase que
UserControl1.

En otras palabras, ahora tienes dos UserControl; uno al que puedes accesar a
traves de la coleccion de controles del formulario y otro al que puedes
accesar a traves de la variable UserControl1.



"Alejandro González" escribió:

Hola
Tengo este problema:
Creo un user control con un constructor que recibe varios parametros.
Tambien creo el constructor por defecto, asi pudo agregar el control a un
formularion en la vista de diseño


Porque no funciona esto?
(el constructor por defecto fue llamado por InitializeComponent())
private void Form1_Load(object sender, System.EventArgs e){
this.userControl1 = new UserControl("use this parameter");
}

Luego de esta llamada a mi constructor, puedo ver en debug que todo esta
bien, el userControl1 tiene las propiedades que deberia tener pero, el
formulario sigue desplegando el userControl1 creado sin parametros

Gracias




Respuesta Responder a este mensaje
#2 Antonio Cuesta
02/08/2006 - 09:50 | Informe spam
Buenos días

Si tienes dos o mas constructores:

public class Hola
{
public Hola()
{
// Código del constructor:
}

public Hola(string nombre)
{
// Código
}
}

Y lo que se quiere es que al utilizar un constructor también se ejecute lo
incluido en otro antes, hay que utilizar this con los parámetros del
constructor que queremos llamar.

Un ejemplo:

public class Hola
{
public Hola()
{
// Código del constructor: por defecto
}

public Hola(string nombre) : this() // llamamos primero al
constructor por defecto.
{
// Código especifco de este constructor
}
}

Si has creado clases heredadas, es como el uso de "base" cuando queremos
llamar al constructor de su "clase base".

En tu caso puede ser mas complicado, pero me imagino que con lo siguiente se
solucionaría:

public UserControl() : this("valor")
{
// No llamar en este a InitializeComponent.
// InitializeComponent();
}

public UserControl(string valor)
{
InitializeComponent();
// Resto del código.
}


Espero que esto sea lo que tu necesitas.

Un saludo
Antonio Cuesta
Respuesta Responder a este mensaje
#3 Alejandro González
02/08/2006 - 15:46 | Informe spam
Muchas gracias

"Pedro Rivera" wrote in message
news:
Que tal Alejandro.

El asunto es que UserControl1 no es el control que agregaste al
formulario,
sino una variable que "apunta" al control que agregaste al formulario.

Cuando tu realizas la siguiente llamada:

this.UserControl1=new UserControl("use this parameter");

Lo que estas haciendo es quitarle el apuntador al control que agregaste al
formulario y apuntar con ella hacia otra instancia de la misma clase que
UserControl1.

En otras palabras, ahora tienes dos UserControl; uno al que puedes accesar
a
traves de la coleccion de controles del formulario y otro al que puedes
accesar a traves de la variable UserControl1.



"Alejandro González" escribió:

Hola
Tengo este problema:
Creo un user control con un constructor que recibe varios parametros.
Tambien creo el constructor por defecto, asi pudo agregar el control a un
formularion en la vista de diseño


Porque no funciona esto?
(el constructor por defecto fue llamado por InitializeComponent())
private void Form1_Load(object sender, System.EventArgs e){
this.userControl1 = new UserControl("use this parameter");
}

Luego de esta llamada a mi constructor, puedo ver en debug que todo esta
bien, el userControl1 tiene las propiedades que deberia tener pero, el
formulario sigue desplegando el userControl1 creado sin parametros

Gracias




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