Foros del Web » Programación para mayores de 30 ;) » .NET »

Actualizar un progressbar en un formulario desde una clase

Estas en el tema de Actualizar un progressbar en un formulario desde una clase en el foro de .NET en Foros del Web. buenas, pues estoy empezando a programar en C# y pues tengo algunos conceptos de programacion lo que quiero hacer es en un Form tengo un ...
  #1 (permalink)  
Antiguo 03/12/2012, 01:57
 
Fecha de Ingreso: febrero-2010
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 0
Actualizar un progressbar en un formulario desde una clase

buenas, pues estoy empezando a programar en C# y pues tengo algunos conceptos
de programacion

lo que quiero hacer es en un Form tengo un progressBar en este form instancio una clase y dentro de esta clase hago un proceso en el cual quiero que me actualize el estado de mi progressbar que esta creado en mi formulario desde donde cree instancie la clase.

no se si me explique bien. se puede hacer esto o tengo que hacer algo mas,

soy nuevo en c# espero que me puedan ayudar, si necesitan mas informacion porfavor decirme
  #2 (permalink)  
Antiguo 03/12/2012, 19:05
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 11 meses
Puntos: 22
Respuesta: Actualizar un progressbar en un formulario desde una clase

Hay varias formas de hacerlo, la forma mas "profesional" desde mi punto de vista es crear en la clase un evento que se dispare cada vez que hay un cambio para que desde el Form se capture y actualice el progressBar, si quieres mas información de como implementarlo agregame al Skype (gedarufi)


Saludos
  #3 (permalink)  
Antiguo 12/12/2012, 09:05
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 11 meses
Puntos: 22
Respuesta: Actualizar un progressbar en un formulario desde una clase

Hola, aqui te dejo un breve ejemplo para hacer lo que necesitas, esta dividido en 2 partes.
  1. Clase que realiza el proceso y "dispara" un evento para reportar un cambio
    Código C#:
    Ver original
    1. public class Clase{
    2.     //Resto de la clase
    3.     public event ProgressChangedEventHandler ReportProgress;
    4.  
    5.     protected void OnReportProgress(ProgressChangedEventArgs e){
    6.         if(ReportProgress != null){
    7.             ReportProgress(this, e);
    8.         }
    9.     }
    10.  
    11.     public void Procesar(){
    12.         for(int i = 0; i < 100; i++){
    13.             OnReportProgress(new ProgressChangedEventArgs(i, null));
    14.             Thread.Sleep(10);//Simula un retardo por el procesamiento de la información, se puede eliminar en la implementación definitiva
    15.         }
    16.     }
    17. }
  2. Implementación en el formulario del metodo que procesa el evento
    Código C#:
    Ver original
    1. //Dentro del Form del ProgressBar
    2. public class FormProgressBar : Form{
    3.     public FormProgressBar(){
    4.         //Resto del constructor
    5.  
    6.  
    7.         Clase cls = new Clase();
    8.  
    9.         cls.ReportProgress += new ProgressChangedEventHandler(cls_ProgressChanged);//Se agrega el manejador del evento
    10.         cls.Procesar();//Se inicia el proceso
    11.     }
    12.  
    13.     //Resto de la clase
    14.  
    15.     private void cls_ProgressChanged(object sender, ProgressChangedEventArgs e)
    16.     {
    17.         this.progressBar.Value = e.ProgressPercentage;//Este valor va de 0 a 100
    18.     }
    19. }

Tal vez tengas que agregar algún using pero en principio no deberías de tener problemas, otra cosa es que yo instancio la clase en el constructor, pero tu puedes hacerlo donde mejor te convenga, espero que esto te sea util.


Saludos

Etiquetas: clase, formulario, progressbar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:05.