Listado recursivo de un directorio en C# y VB

Listar de forma recursiva todos los archivos de un directorio y de los subdirectorios que contiene, informando del tiempo requerido para la tarea, con botones para ordenar la lista de forma ascendente o descendente, en Visual Studio 2017 con C# y VB

Damián Castroviejo tiene un ejercicio titulado «How to use a recursive function to read a directory structure and save it to XML» cuyo código consigue listar adecuadamente de forma recursiva los archivos de un directorio y de sus subdirectorios y guardar la estructura de archivos y carpetas en un archivo XML. Aplicando la función recursiva propuesta por Damián Castroviejo, en este ejercicio se rellena un control ListBox con todos los archivos existentes en una carpeta determinada.

Leer más

Regiones del formulario en C# y VB (GDI+)

Capturar la ventana completa del formulario con o sin decoración (área cliente) o una región que se corresponde con un control PictureBox usando GDI+ mediante objetos Graphics de origen y destino y la función BitBlt que combina 2 mapas de bits en uno solo, en C# y VB

En un artículo anterior se mostraba cómo aplicar un recorte circular a la imagen de un control PictureBox para que la imagen se vea redondeada. He ampliado el ejercicio continuando con GDI (Graphics Device Interface). GDI es es uno de los tres componentes de la interfaz de usuario de Microsoft Windows. Trabaja junto con el núcleo y la API de Windows.

Leer más

Formulario con diferentes formas en C# y VB

Aplicar regiones a un formulario usando objetos GraphicsPath.AddLine y GraphicsPath.AddEllipse para recortar el área del formulario y cambiar la forma de la ventana, en Visual Studio 2017 con C# y VB

Utilizando objetos de la clase GraphicsPath y aplicando regiones de recorte es sencillo modificar la forma de la ventana de un formulario. Podemos darle prácticamente cualquier aspecto pero, por sencillez del código, en este ejercicio nos restringiremos a 3 formas, círculo, rombo y polígono, usando regiones de recorte con el aspecto deseado.

Leer más

Captura de pantalla o ventana activa en C#

Capturar la pantalla o la ventana activa usando la clase SendKeys sin recurrir a librerías externas en Visual Studio 2017 con C#

En este ejercicio se propone una manera relativamente sencilla para capturar tanto la pantalla completa como la ventana activa, copiarla al portapapeles y almacenarla en disco como JPG. Es la versión hecha en C# del ejercicio anterior hecho en Visual Basic. El proceso para hacer la captura es el siguiente:

Leer más

Captura de pantalla o ventana activa en VB

Capturar la pantalla o la ventana activa usando la clase SendKeys sin recurrir a librerías externas en Visual Studio 2017 con VB

En este ejercicio se propone una manera relativamente sencilla para capturar tanto la pantalla completa como la ventana activa, copiarla al portapapeles y almacenarla en disco como JPG. Este ejercicio constituye un ejemplo más de que es posible realizar con Visual Basic .NET aplicaciones relativamente complejas y utilizables como ésta aunque el programador no tenga un nivel avanzado. El proceso para hacer la captura es el siguiente:

  • se minimiza la aplicación para que no salga en la captura con el ítem Minimized de la enumeración FormWindowState
  • el proceso queda suspendido durante 500 milisegundos con el método Sleep de la clase Thread
  • la pulsación de teclas es enviada con el método SendWait de la clase SendKeys para obtener la captura en ese intervalo
  • las teclas que se envían son las que se utilizan en Windows para hacer estas capturas
  • desde el portapapeles se obtiene un objeto Bitmap que permite guardar la imagen en disco y mostrarla en el PictureBox

Leer más

Borrar los archivos temporales en VB

Ejercicio que obtiene las variables de entorno TEMP y APPDATA, lee y escribe en un archivo de texto para llevar la cuenta de archivos borrados e inicia un nuevo hilo o hebra (thread) para reiniciar el formulario, en Visual Studio 2017 con VB

En este ejercicio se propone una aplicación que borra los archivos temporales de Windows y la carpeta que los contiene, leyendo la variable de entorno TEMP definida para el usuario de la sesión actual. Además, se muestra al usuario información sobre:

  1. número de archivos encontrados en la ejecución actual dentro de la carpeta que corresponda a la variable de entorno %TEMP%
  2. número de archivos borrados en la ejecución actual (sólo se borran los archivos que no estén en uso)
  3. número total acumulado de archivos borrados por el programa desde su primera ejecución leyendo este dato desde un archivo de texto colocado en la carpeta que corresponda a la variable de entorno %APPDATA%.

Leer más

Quitar botón cerrar de la ventana en C#

Deshabilitar el botón cerrar de la barra de título de la ventana usando procedimientos externos a .NET existentes en librerías del sistema (Platform Invoque) en Visual Studio 2017 con C#

Un programador desea que una aplicación arranque sin que pueda ser terminada por el usuario pulsando el botón Cerrar de la Barra de título del formulario (el aspa o la equis de la esquina derecha) ni mediante la pulsación de las teclas ALT+F4. El código en C# que se presenta en este artículo desactiva ese botón y el efecto de las teclas ALT+F4.

Leer más

Formularios en hilos separados en C# y VB

Arrancar 2 formularios diferentes pero cada uno de ellos en su propio hilo utilizando clases de System.Threading que permiten la programación multiproceso en C# y en VB

Es frecuente tener una aplicación con 2 formularios en la que desde el primero en aparecer iniciamos el otro y, al cerrar el primer formulario, se cierra el segundo automáticamente. Pero en ocasiones puede interesarnos que el cierre del primer formulario no conlleve el cierre del segundo, es decir, que ambos formularios sean verdaderamente independientes y que ambos se inicien a la vez (al arrancar la aplicación). El comportamiento por defecto en las aplicaciones de Visual Studio es el comentado en primer lugar, se debe a que ambos formularios se ejecutan en el mismo hilo del proceso principal iniciado por el formulario 1 por lo que, al cerrarlo, terminamos ese hilo y todo lo que en él sucede incluido el segundo formulario.

Leer más

Elemento PictureBox redondeado en C# y VB

PictureBox sobre el que se dibuja una región de recorte de forma circular con el método GraphicsPath.AddEllipse para obtener una imagen redonda, en C# y VB

Tienes una versión más compleja de este ejercicio aquí.

Clase GraphicsPath

La clase GraphicsPath del espacio de nombres System.Drawing.Drawing2D tiene objetos que representan figuras (líneas y curvas conectadas). Las aplicaciones usan estas secuencias de datos con líneas y curvas (path) para dibujar los bordes o rellenar el interior de las figuras y crear zonas de recorte. El motor gráfico mantiene las coordenadas de las figuras geométricas en objetos path que pueden estar formados a su vez por otras figuras (subpath).

Leer más

ComboBox con autocompletado de texto en VB

ComboBox con función de autocompletado al ir escribiendo caracteres en un cuadro de texto, con el ComboBox oculto en el formulario, en Visual Basic .NET

Resumen del ejercicio: a medida que se van escribiendo letras en un cuadro de texto, otro cuadro de texto va mostrando la primera coincidencia de una lista de palabras de un control Combobox oculto en el formulario (similar a la función Intellisense). Las lista de palabras existentes en la colección se muestran en un control RichTextBox para facilitar la interacción con el usuario.

Código en Visual Basic .NET

Utilizamos 2 controles TextBox, en uno escribimos las letras de la palabra buscada y el otro va mostrando la primera coincidencia. La lista de palabras en las que buscaremos coincidencias están almacenadas en un control ComboBox oculto ya que no necesito mostrarlo, solamente utilizar su funcionalidad.

Leer más