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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Barra de progreso tuyo propio
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Barra de progreso tuyo propio  (Leído 1,221 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Barra de progreso tuyo propio
« en: 22 Julio 2024, 11:42 am »



Intentando probar mi propia barra de progreso en Windows Form .Net 8.0. No me calcula nada.

¿Qué se me escapa?

Dejo el código en C#.
Código
  1. namespace Barra_de_progreso_01
  2. {
  3.    public partial class Form1 : Form
  4.    {
  5.        float mitadBarra, resultadoPorcentaje = 0.0f;
  6.  
  7.        public Form1()
  8.        {
  9.            InitializeComponent();
  10.        }
  11.        private void button_Enter_Click(object sender, EventArgs e)
  12.        {
  13.            // Mitad de la barra para que no sea muy grande en la pantalla.
  14.            mitadBarra = resultadoPorcentaje / 2;
  15.  
  16.            if (resultadoPorcentaje <= 15)
  17.            {
  18.                label_Barra_de_progreso.ForeColor = Color.Red;
  19.            }
  20.            else if (resultadoPorcentaje <= 40)
  21.            {
  22.                label_Barra_de_progreso.ForeColor = Color.Yellow;
  23.            }
  24.            else if (resultadoPorcentaje <= 100)
  25.            {
  26.                label_Barra_de_progreso.ForeColor = Color.Green;
  27.            }
  28.  
  29.            if (mitadBarra > 50)
  30.            {
  31.                mitadBarra = 50;
  32.            }
  33.  
  34.            // Rellenar la barra.
  35.            for (int i = 1; i <= mitadBarra; i++)
  36.            {
  37.                label_Barra_de_progreso.Text = "&#9608;";
  38.                // Tiempo en mostrar lentamente la barra del porcentaje.
  39.                Thread.Sleep(10); // 60000 ms, 60 seg, 1 minuto.
  40.            }
  41.        }
  42.    }
  43. }

Saludos.


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.162



Ver Perfil
Re: Barra de progreso tuyo propio
« Respuesta #1 en: 22 Julio 2024, 16:06 pm »

Solo tienes que hacer tu plantilla y contar cuadritos (caracteres) ya que estás trabajando con una fuente monoespaciada

Plantilla:

Citar
0 %                     50 %                    100 %
┌────────────────────────┬────────────────────────┐
███████████████████████████████████████████████████

- Los porcentajes irían desde el 0 al 100, es decir 101 valores posibles
- La barra al 100% tiene 51 caracteres

Ahora en tu diseño pones un Label para las dos primeras líneas, luego pones otro Label más para la tercera línea (la barra), los cuadras para que se vea bien y listo, ya solo queda poner el código:



Código
  1. using System;
  2. using System.Drawing;
  3. using System.Threading;
  4. using System.Windows.Forms;
  5.  
  6. namespace BarraDeProgreso {
  7.  public partial class Form1 : Form {
  8.    public Form1() {
  9.      InitializeComponent();
  10.    }
  11.  
  12.    private void Form1_Load(object sender, EventArgs e) {
  13.      label_Barra_de_progreso.Text = ""; //Vaciar la barra
  14.    }
  15.  
  16.    private void button_Enter_Click(object sender, EventArgs e) {
  17.  
  18.      int valor = int.Parse(textBox1.Text); //Valor introducido
  19.      int valor_barra = valor * 51 / 101; //Cálculo del tamaño de la barra
  20.  
  21.      if (valor <= 15) {
  22.        label_Barra_de_progreso.ForeColor = Color.Red;
  23.      } else if (valor <= 40) {
  24.        label_Barra_de_progreso.ForeColor = Color.Yellow;
  25.      } else if (valor <= 100) {
  26.        label_Barra_de_progreso.ForeColor = Color.Green;
  27.      }
  28.  
  29.      label_Barra_de_progreso.Text = "";
  30.      for (int i = 0; i <= valor_barra; i++) {
  31.        label_Barra_de_progreso.Text += "@"; //Inserta un cuadrito más a la barra
  32.        label_Barra_de_progreso.Refresh(); //Necesario refrescar para ver el cambio
  33.        Thread.Sleep(10);
  34.      }
  35.  
  36.    }
  37.  
  38.  }
  39. }
  40.  

- Reemplaza el "@" de la línea 31 por "█", GeSHi se fastidia si se le ponen caracteres raros XD
- En la línea 19 estoy utilizando los valores 51 y 101 que calculé gracias a la plantilla



En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Barra de progreso tuyo propio
« Respuesta #2 en: 22 Julio 2024, 17:58 pm »

Muchísimas gracias mi muy distinguido amigo. Ya me funciona.

Lo hice a mi manera gracias a ti.
Código
  1. namespace Barra_de_progreso_01
  2. {
  3.    public partial class Form1 : Form
  4.    {
  5.        public Form1()
  6.        {
  7.            InitializeComponent();
  8.        }
  9.        private void Form1_Load(object sender, EventArgs e)
  10.        {
  11.            // Limpiar.
  12.            label_Barra_de_progreso.Text = "";
  13.            label_Desbordamiento.Text = "";
  14.            label_Porcentaje.Text = "";
  15.        }
  16.        private void button_Enter_Click(object sender, EventArgs e)
  17.        {
  18.            // Variables.
  19.            float mitadBarra = 0.0f;
  20.            float resultadoPorcentaje = float.Parse(textBox_valor_barra.Text);
  21.  
  22.            // Mitad de la barra para que no sea muy grande en la pantalla.
  23.            mitadBarra = resultadoPorcentaje / 2;
  24.  
  25.            if (resultadoPorcentaje <= 15)
  26.            {
  27.                label_Barra_de_progreso.ForeColor = Color.Red;
  28.            }
  29.            else if (resultadoPorcentaje <= 40)
  30.            {
  31.                label_Barra_de_progreso.ForeColor = Color.Yellow;
  32.            }
  33.            else if (resultadoPorcentaje <= 100)
  34.            {
  35.                label_Barra_de_progreso.ForeColor = Color.Green;
  36.            }
  37.  
  38.            if (mitadBarra > 50)
  39.            {
  40.                mitadBarra = 50;
  41.            }
  42.  
  43.            // Limpiar barra.
  44.            label_Barra_de_progreso.Text = "";
  45.  
  46.            // Rellenar la barra.
  47.            for (int i = 1; i <= mitadBarra; i++)
  48.            {
  49.                // Dibuja la barra.
  50.                label_Barra_de_progreso.Text += "&#9608;";
  51.  
  52.                // Porcentajes y con dos decimales indicado con N2.
  53.                label_Porcentaje.Text = resultadoPorcentaje.ToString("N2") + " %";
  54.  
  55.                // Refrescar para ver el cambio.
  56.                label_Barra_de_progreso.Refresh();
  57.                label_Porcentaje.Refresh();
  58.  
  59.                // Tiempo en mostrar lentamente la barra del porcentaje.
  60.                Thread.Sleep(10); // 60000 ms, 60 seg, 1 minuto.
  61.            }
  62.  
  63.            // Si llega mayor a 100 se pone el # en rojo.
  64.            if (resultadoPorcentaje > 100)
  65.            {
  66.                label_Desbordamiento.ForeColor = Color.Red;
  67.                label_Desbordamiento.Text = "#";
  68.            }
  69.        }
  70.    }
  71. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
barra de progreso
.NET (C#, VB.NET, ASP)
DaNuK 2 4,517 Último mensaje 10 Marzo 2010, 02:05 am
por DaNuK
Barra de progreso [Batch]
Scripting
Nilrac 8 17,075 Último mensaje 13 Enero 2016, 09:13 am
por Eleкtro
VBS barra de progreso
Programación Visual Basic
quico5 0 3,418 Último mensaje 14 Agosto 2012, 20:41 pm
por quico5
barra de progreso en c++
Programación C/C++
d91 4 5,287 Último mensaje 27 Abril 2014, 21:25 pm
por amchacon
Barra de progreso (Con dos valores)
Desarrollo Web
Leguim 2 1,473 Último mensaje 1 Febrero 2019, 15:22 pm
por Leguim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines