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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  [APORTE] Lección útil para bebés 1.0
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [APORTE] Lección útil para bebés 1.0  (Leído 2,230 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
[APORTE] Lección útil para bebés 1.0
« en: 11 Enero 2013, 03:57 am »

UPS, ME EQUIVOQUÉ DE SECCIÓN, LO PUEDEN MOVER A VB.NET PORFAVOR? XD SORRY









Estaba ayudando a un user que no sabía como usar una barra de progreso, y bueno, hice este form.

Cuando lo completé me dí cuenta de que a mi me habría servido cuando no sabía hacer nada de esto, así que quiero compartirlo por si a alguien le puede servir :xD

Cita de: Yo en otro foro
Con mi ejemplo puedes aprender a...:
· Crear / Añadir controles en tiempo de ejecución,
· Modificar algunas propiedades de controles
· Asociar el evento de un control en tiempo de ejecución a una subrutina
· Usar las variables de entorno
· Obtener todos los archivos de un directorio
· Crear un array y procesar su contenido
· Usar y conocer una barra de progreso,
· Algunos métodos útiles como "Update"

Eso sí, sin threads, esto es un ejemplo MUY básico.

PD: En serio, no quiero comentarios como "Esto no vale nada", si no te gusta no comentes, a un novato le servirá.

 


Código
  1. Public Class Form1
  2.  
  3.  
  4.    ' Declaro los controles que vamos a usar en este form:
  5.    Dim Label_Origen As New Label
  6.    Dim Label_Destino As New Label
  7.    Dim Label_FileName As New Label
  8.    Dim Label_Restantes As New Label
  9.    Dim WithEvents Button_Copiar As New Button
  10.    Dim ProgressBar_1 As New ProgressBar
  11.  
  12.  
  13.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  14.  
  15.        Me.Size = New Point(420, 320)
  16.        ' Le otorgo las propiedades a los controles
  17.        ' -------------------------------------------------------
  18.        ' Label Origen
  19.        Dim Fuente As New Font("Sans Serif", 20, FontStyle.Regular) ' Seteo la fuente personalizada que quiero usar, porque me apetece usar una distinta y así aprendes xD
  20.        Label_Origen.Font = Fuente
  21.        Label_Origen.Text = "Origen: " & Environment.GetFolderPath(Environment.SpecialFolder.Windows) & "\Fonts"
  22.        Label_Origen.AutoSize = False
  23.        Label_Origen.Size = New Point(640, 40)
  24.        Label_Origen.Location = New Point(0, 0)
  25.        ' Label Destino
  26.        Label_Destino.Font = Fuente
  27.        Label_Destino.Text = "Destino: " & Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & "\Test" ' O Environment.SpecialFolder.ProgramFilesX86
  28.        Label_Destino.AutoSize = False
  29.        Label_Destino.Size = New Point(640, 40)
  30.        Label_Destino.Location = New Point(0, 50)
  31.        ' Botón Copiar
  32.        Button_Copiar.Size = New Point(180, 80)
  33.        Button_Copiar.Text = "Copiar!"
  34.        Button_Copiar.Location = New Point(100, 100)
  35.        AddHandler Button_Copiar.Click, AddressOf Button_Copiar_Sub ' Añado el evento "Click" que sucede cuando pinchas el botón, y se llama a la subrutina "Button_Copiar_Sub"
  36.        ' ProgressBar_1
  37.        ProgressBar_1.Size = New Point(180, 20)
  38.        ProgressBar_1.Location = New Point(100, 200)
  39.        ' Label FileName
  40.        Label_FileName.AutoSize = True
  41.        Label_FileName.Location = New Point(100, 230)
  42.        ' Label Restantes
  43.        Label_Restantes.AutoSize = True
  44.        Label_Restantes.Location = New Point(100, 250)
  45.  
  46.        ' Añado los controles al form principal:
  47.        Me.Controls.Add(Label_Origen)
  48.        Me.Controls.Add(Label_Destino)
  49.        Me.Controls.Add(Button_Copiar)
  50.        Me.Controls.Add(ProgressBar_1)
  51.        Me.Controls.Add(Label_FileName)
  52.        Me.Controls.Add(Label_Restantes)
  53.    End Sub
  54.  
  55.  
  56.    Private Sub Button_Copiar_Sub(sender As Object, e As EventArgs)
  57.  
  58.        ' Seteo las variables de origen y destino de carpetas
  59.        Dim Origen As String = Label_Origen.Text.Split(" ")(1)
  60.        Dim Destino As String = Label_Destino.Text.Split(" ")(1)
  61.  
  62.        ' Creo un array con todos los archivos del directorio de origen
  63.        Dim Directory As New System.IO.DirectoryInfo(Origen)
  64.        Dim Array_Files As System.IO.FileInfo() = Directory.GetFiles("*")
  65.  
  66.        ' A la progressBar tenemos que darle un valor "Máximo" (SIEMPRE) (El máximo por defecto es 100, pero si tenemos 101 archivos nos joderá porque no podemos sobrepasar el Máximo),
  67.        ' Ese valor en este caso es el número total de archivos que contiene el directorio.
  68.        ProgressBar_1.Maximum = Array_Files.Length
  69.  
  70.        ' Por cada archivo del Array, sumamos un valor a la ProgressBar, y realizamos las operaciones de copiado o lo que queramos...
  71.        For Each File In Array_Files
  72.            Label_FileName.Text = "Archivo copiado: " & File.Name
  73.            Label_FileName.Update() ' Como no estoy usando threads, tengo que actualizar el estado del label para darle prioridad y que se muestre correctamente, lo cúal ralentiza bastante (BASTANTE) el proceso. Para estas cosas ya te digo que se deben usar Threads + delegados
  74.            Threading.Thread.Sleep(20) ' Le hago esperar 20 ms a este hilo símplemente para que veas bien como se actualiza el proceso de la barra de progreso.
  75.            ProgressBar_1.Value += 1
  76.            Label_Restantes.Text = "Faltan " & (ProgressBar_1.Maximum - ProgressBar_1.Value) & " archivos por copiarse"
  77.            Label_Restantes.Update() ' Otra vez el update necesario para poder mostrar el estado del label, más ralentización para el hilo, de verdad, estudia sobre los threads y cuando sepas algo te ayudaré a entenderlos y usarlos.
  78.        Next
  79.  
  80.        ' Devolvemos los valores originales a la ProgressBar y modificamos los valores de los labels
  81.        ProgressBar_1.Value = 0
  82.        ProgressBar_1.Maximum = 100
  83.        Label_FileName.Text = Nothing
  84.        Label_Restantes.Text = "Todos los archivos copiados."
  85.  
  86.    End Sub
  87.  
  88.  
  89. End Class


« Última modificación: 11 Enero 2013, 03:59 am por EleKtro H@cker » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Una herramienta útil para CDs
Software
4rm4ndo 0 1,462 Último mensaje 2 Noviembre 2003, 13:29 pm
por 4rm4ndo
Un sitio 'web' para gente guapa lanza oferta de genes para bebés bonitos
Noticias
wolfbcn 2 2,605 Último mensaje 29 Julio 2010, 01:16 am
por (_.·´¯`·«¤°Zheck¤»·´¯`·._)
Donde consigo el softice para windows xp para la leccion de ricardo
Ingeniería Inversa
juancarlos230 1 5,074 Último mensaje 25 Diciembre 2010, 22:57 pm
por tena
Halo Aniversary: una lección para otros diez años
Noticias
wolfbcn 0 1,547 Último mensaje 25 Noviembre 2011, 13:38 pm
por wolfbcn
[Aporte] ....::: Clase Arrays del paquete java.util :::...
Java
horny3 0 4,114 Último mensaje 24 Septiembre 2012, 06:43 am
por horny3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines