referencias a controles(2)

30/09/2004 - 18:11 por Jose Vicente Cheto Ortiz | Informe spam
Hola amigos:

Perdonen que siga insistiendo en el tema

Pero... la verdad es que crei que seria mas facil, en Delphi para hacer
referencia a un control que
estaba en otro formulario bastaba con
añadir
el formulario al uses del otro y listo, pero bueno
Con la solucion de octavio, que era crear una propiedad

public bool EstaChecked
{
get
{
return checkBox1.Checked;
}
set
{
checkBox1.Checked = value;
}
}

De esta manera será accesible:

Form1 frm = new Form1();

if (frm.EstaChecked)
//Realizar tarea.


Me deja acceder perfectamente, pero si no dejo por defecto el
checkBox1 propiedad Checked a True. No me funciona.
Me explico:
Si lo dejo como esta por defecto en false y en tiempo de ejecucion lo pulso
para activarlo.
cuando paso al otro formulario no se entera .

¿Alguna otra solucion o un arreglo para esta Octavio?

gracias adelantadas.

Saludos
http://perso.wanadoo.es/jvtecheto

Preguntas similare

Leer las respuestas

#1 Guillermo guille
30/09/2004 - 22:31 | Informe spam
no soy Octavio, pero...

Si el código que usas para acceder a esa propiedad es el que muestras, el
problema es que estás creando un nuevo objeto del formulario (Form1) cada vez
que ejecutas ese código, por tanto, siempre que ejecutes esas instrucciones
crearás un nuevo formulario el cual está oculto (ya que no has llamado al
método Show) y por eso no lo ves.
La solución sería hacer la variable frm local (declarada a nivel de clase) y
sólo instanciarla si realmente no está en la memoria.
Algo así:

if(frm == null || frm.IsDisposed)
frm = new Form1();

if (frm.EstaChecked)
//Realizar tarea.


Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"Jose Vicente Cheto Ortiz" wrote in message
news:
Hola amigos:

Perdonen que siga insistiendo en el tema

Pero... la verdad es que crei que seria mas facil, en Delphi para hacer
referencia a un control que
estaba en otro formulario bastaba con
añadir
el formulario al uses del otro y listo, pero bueno
Con la solucion de octavio, que era crear una propiedad

public bool EstaChecked
{
get
{
return checkBox1.Checked;
}
set
{
checkBox1.Checked = value;
}
}

De esta manera será accesible:

Form1 frm = new Form1();

if (frm.EstaChecked)
//Realizar tarea.


Me deja acceder perfectamente, pero si no dejo por defecto el
checkBox1 propiedad Checked a True. No me funciona.
Me explico:
Si lo dejo como esta por defecto en false y en tiempo de ejecucion lo pulso
para activarlo.
cuando paso al otro formulario no se entera .

¿Alguna otra solucion o un arreglo para esta Octavio?

gracias adelantadas.

Saludos
http://perso.wanadoo.es/jvtecheto



Respuesta Responder a este mensaje
#2 Octavio Hernandez
01/10/2004 - 01:23 | Informe spam
JV,

Creo que el problema es exactamente el que dice Guille (¡Gracias, maestro!),
estás creando múltiples formularios en lugar de hacer referencia siempre al
mismo...

Slds - Octavio

"Jose Vicente Cheto Ortiz" escribió en el mensaje
news:
Hola amigos:

Perdonen que siga insistiendo en el tema

Pero... la verdad es que crei que seria mas facil, en Delphi para hacer
referencia a un control que
estaba en otro formulario bastaba con
añadir
el formulario al uses del otro y listo, pero bueno
Con la solucion de octavio, que era crear una propiedad

public bool EstaChecked
{
get
{
return checkBox1.Checked;
}
set
{
checkBox1.Checked = value;
}
}

De esta manera será accesible:

Form1 frm = new Form1();

if (frm.EstaChecked)
//Realizar tarea.


Me deja acceder perfectamente, pero si no dejo por defecto el
checkBox1 propiedad Checked a True. No me funciona.
Me explico:
Si lo dejo como esta por defecto en false y en tiempo de ejecucion lo


pulso
para activarlo.
cuando paso al otro formulario no se entera .

¿Alguna otra solucion o un arreglo para esta Octavio?

gracias adelantadas.

Saludos
http://perso.wanadoo.es/jvtecheto



Respuesta Responder a este mensaje
#3 Jose Vicente Cheto Ortiz
01/10/2004 - 19:43 | Informe spam
"> Creo que el problema es exactamente el que dice Guille (¡Gracias,
maestro!),
estás creando múltiples formularios en lugar de hacer referencia siempre


al
mismo...




Por ahi van los tiros... .pero no funciona :-(
Replanteo la pregunta. :-((

siento que perdais el tiempo conmigo, pero... si queres son pocos clics de
raton.

en el formulario principal colocad un CheckBox
y un boton que crea una nueva ventana.


añadir otro formulario (la otra ventana que creara el boton) y
colocad un label sin texto.

Se trata de que al arrancar la aplicacion y luego pulsar el boton
para crear una nueva ventana .
Si el Checkbox ha sido activado que salga un mensaje (en el label)

... Funciona // o algo parecido.

Supongo que me habre explicado bien

¿Como lo hariais?
Respuesta Responder a este mensaje
#4 Octavio Telis Aynes
01/10/2004 - 20:32 | Informe spam
a ver Vicente...

Lo que quieres es que al seleccionar el checkbox se mande el texto a la
etiqueta pero del otro formulario?

Vemos...

En Form1:

Evento click del botón que lanza el formulario:
private void button1_Click(object sender, System.EventArgs e)
{
Form2 frm = new Form2(label1);
frm.Show();
}


En Form2:
Declaración del una variable Label, creas un nuevo contructor, su usuo se
muestra arriba, y bueno, la prueba en el evento CheckedChange del CheckBox

private Label Lbl;

public Form2(Label lbl)
{
InitializeComponent();
Lbl = lbl;
}

private void checkBox1_CheckedChanged(object sender, System.EventArgs e)

{
CheckBox chk = sender as CheckBox;
if (chk.Checked)
Lbl.Text = "Está pegao";
else
Lbl.Text = "Está apagao";
}


Haciendo esto, se reflejará el cambio de texto en la etiqueta de Form1,
debes tener una etiqueta label1 en Form1
Espero atinarle esta vez : )

Saludos...

Octavio Telis Aynés
www.comunidadpuntonet.org/df/


Creo que quieres que la respuesta
"Jose Vicente Cheto Ortiz" escribió en el mensaje
news:

"> Creo que el problema es exactamente el que dice Guille (¡Gracias,
maestro!),
> estás creando múltiples formularios en lugar de hacer referencia siempre
al
> mismo...


Por ahi van los tiros... .pero no funciona :-(
Replanteo la pregunta. :-((

siento que perdais el tiempo conmigo, pero... si queres son pocos clics de
raton.

en el formulario principal colocad un CheckBox
y un boton que crea una nueva ventana.


añadir otro formulario (la otra ventana que creara el boton) y
colocad un label sin texto.

Se trata de que al arrancar la aplicacion y luego pulsar el boton
para crear una nueva ventana .
Si el Checkbox ha sido activado que salga un mensaje (en el label)

... Funciona // o algo parecido.

Supongo que me habre explicado bien

¿Como lo hariais?



Respuesta Responder a este mensaje
#5 Octavio Hernandez
01/10/2004 - 22:45 | Informe spam
JV,

Exactamente lo que dice Octavio (qué tal, tocayo!), la cosa está en
agregarle al segundo formulario un CONSTRUCTOR adecuado.
Yo en vez de un constructor que reciba un Label haría un constructor que
reciba un booleano:

public Form2: Form
{
public Form2(bool mostrarMensaje)
{
Lbl.Visible = mostrarMensaje;
}
}

Y desde el formulario principal lo construiría:

Form2 f = new Form2(checkBox1.Checked);
f.Show();

La etiqueta del Form2 (asígnale un texto cualquiera) se verá si y sólo si la
casilla del Form1 está marcada.

Salu2,

Octavio (Hdez.)
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida