elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Como acceder a controles de un formulario desde otra clase?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como acceder a controles de un formulario desde otra clase?  (Leído 16,195 veces)
Rakzo-Fimbres

Desconectado Desconectado

Mensajes: 18



Ver Perfil
Como acceder a controles de un formulario desde otra clase?
« en: 29 Junio 2008, 23:01 pm »

En Visual Basic.NET no hay problema, ya que cuando estamos en una clase solamente hacemos esto (un ejemplo):
Código:
'ProgressBar1.Value = 20 'Si hacemos esto, no reconocera el objeto, tendriamos que agregar...
frmMain.ProgressBar1.Value = 20

Pero al hacer lo mismo en C#, no reconoce las propiedades de la progressbar ni el objeto.. cómo lo puedo solucionar?


En línea

SeniorX


Desconectado Desconectado

Mensajes: 1.347


Programador Novato


Ver Perfil WWW
Re: Como acceder a controles de un formulario desde otra clase?
« Respuesta #1 en: 30 Junio 2008, 01:06 am »

Yo lo que hago es en la clase form1 hago un:
Código:
Funciones fn = new Funciones();
ProgressBar1.Value = fn.valorBarra();

Donde Funciones es la clase que tiene una funcion que se llama valorBarra que retorna un int.

Ojala quede claro! Sino pregunta

Suerte!


En línea

Código:
try {
     live();
}
catch (ShitHappensException ex) {
MessageBox.Show(ex.Solution)
}
Precaución: La programacion puede producir adiccion
Rakzo-Fimbres

Desconectado Desconectado

Mensajes: 18



Ver Perfil
Re: Como acceder a controles de un formulario desde otra clase?
« Respuesta #2 en: 30 Junio 2008, 01:23 am »

O sea haces una funcion?

A lo mejor me expliqué mal men.. Aver un ejemplo..

Digamos que tenemos "Form1" y agregamos una clase "Clase1"
En Form1 agregué un botón btnComenzar y con un Text = "Comenzar"

Ahora, trabajo con la clase, y al estar allí necesito cambiar el valor Text de btnComenzar a:
Código:
btnComenzar = "Pausar"

Pero al escribir btnComenzar, me aparece el error:
El nombre "btnComenzar" no existe en el contexto actual

Es decir como acceder a los controles del Form1 desde la Clase1

SenirX me podrias dar un ejemplo más claro por favor.
Gracias..
« Última modificación: 30 Junio 2008, 01:31 am por Rakzo-Fimbres » En línea

MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: Como acceder a controles de un formulario desde otra clase?
« Respuesta #3 en: 30 Junio 2008, 06:14 am »

claro, no puedes acceder asi de facil, pues cuando hace esto:
Código:
    Form A = new Form();
creas una nueva instancia, y es alli donde se crean los controles... tendrias que crearte un metodo estatico que llamarias desde la clase para que cambie el texto del control.

Atentamente,


Juan Manuel Lombana
Medellín - Colombia
En línea


zheo


Desconectado Desconectado

Mensajes: 707



Ver Perfil
Re: Como acceder a controles de un formulario desde otra clase?
« Respuesta #4 en: 22 Julio 2008, 12:19 pm »

El problema que tienes suena a que en VB.NET -dios sabe por qué oscura razón- si no especificas el ámbito de las variables miembra éstas se consideran publicas. En C# por el contrario son privadas por defecto -lo que debería ser lógico y normal... di tú que VB nunca fue muy lógico ni muy normal.
 
Por tanto en VB puedes hacer algo como
form1.BarraProgreso.Value
y en C# no, porque en el primero tienes acceso público a la variable miembro, y en el segundo no

Si lo que quieres es acceder desde una clase a una variable miembro de otra clase y modificarla tienes muchas soluciones. La más sencilla es establecer la variable miembro como pública, algo realmente chapucero.

También puedes exponer la variable miembro como una propiedad, pero en este caso sería como establecerla pública pero escribiendo más.

Algo un poco más elegante es exponer en tu clase form1 el dato que necesitas de la variable miembro como una propiedad (o método), por ejemplo:

Código:
public class Form1 : System.Windows.Forms.Form
{
  ...
  private ProgressBar ProgressBar1 ;
  ...
 
  public int ProgressBarValue
  {
     get { return this.ProgressBar1.Value; }
     set { this.ProgressBar1.Value = value; }
  }
   ...
}

y entonces podrías hacer:
Código:
Form1 form1 = new Form1();

form1.ValorBarraProgreso = 20;

Pero en tu caso particular (acceder a form1 desde otra clase) tendrías que tener una referencia a la instancia de form1 para poder acceder a la propiedad que acabas de crear. Eso lo puedes hacer pasándo form1 como referencia en el constructor de la clase y guardándola en una variable miembro privada a la clase (Dependency Injection):
Código:
public class class1
{
    private Form1 _mainForm;
 
    public class1(Form1 f)
    {
         //TODO: test f == null
         _mainForm = f;
    }

    public void SetFormProgressBarValue(int value)
    {
         _mainForm.ProgressBarValue= value;
    }
}

En línea

Sólo hay 10 tipos de personas: las que saben binario y las que no.

¿Quieres programar un videojuego? Si quieres unirte pulsa aqui
Rakzo-Fimbres

Desconectado Desconectado

Mensajes: 18



Ver Perfil
Re: Como acceder a controles de un formulario desde otra clase?
« Respuesta #5 en: 22 Julio 2008, 21:13 pm »

Gracias a todos por su ayuda, he solucionado mi problema.

Tema cerrado  :P
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines