Formulario redondeado, romboidal y poligonal en C#

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#

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.

GraphicsPath del espacio de nombres System.Drawing.Drawing2D representa una serie de líneas y curvas conectadas. La base del ejercicio es:

  • ventana redondeada: en el evento Paint de un PictureBox o del formulario se dibuja sobre GraphicsPath una región de recorte de forma circular con el método AddEllipse y se convierte en la región visible del formulario
  • ventana romboidal y poligonal: en el evento Load del formulario se van añadiendo líneas definidas por su punto x.y de inicio y de final con coordenadas absolutas calculadas respecto a la ventana visible del formulario. Cada segmento de línea se añade con GraphicsPath.AddLine(Int32, Int32, Int32, Int32) a la figura actual.
Sigue leyendo “Formulario redondeado, romboidal y poligonal en C#”

Listar archivos de directorios en ASP .NET con C#

Mostrar en el navegador web los archivos de un directorio remoto o local con una página dinámica aspx usando System.Collection o System.IO, en C#

ASP .NET tiene varias formas de acceder a los archivos y subcarpetas que están dentro de una carpeta. En este ejercicio se muestran dos maneras diferentes de listar lesos elementos, ambas se basan en código relativamente sencillo, comprensible por programadores no expertos.

Usando colecciones y la interfaz System.Collection.IEnumerator

Una colección (Collection) es un tipo especial de matriz o array especialmente preparado para unas tareas determinadas. Los objetos Collection se crean desde las clases e interfaces del espacio de nombres System.Collections. Algunas interfaces útiles de Collections son:

  • IEnumerator: para recorrer listas de valores
  • IList: para ordenar listas de valores
  • ICollection: para modificar listas de valores
  • ICloneable: para hacer copias de listas de valores.
Sigue leyendo “Listar archivos de directorios en ASP .NET con C#”

Saber la versión de Windows en C#

Obtener datos sobre el nombre del producto, la versión, el número de compilación y la arquitectura de 32 o 64 bits del sistema operativo mediante clases de .NET o el registro de Windows, en C#

En ocasiones puede ser necesario que un programa o librería acceda a datos de la versión de Windows instalada en el sistema. Este ejercicio presenta 2 formas de hacerlo, utilizando clases de .NET Framework o leyendo esa información directamente desde el registro de Windows. Se presenta el ejercicio en C# pero al final está el enlace de descarga a la aplicación completa con el añadido de la versión en Visual Basic .NET.

Sigue leyendo “Saber la versión de Windows en C#”

DataTable desde Microsoft Access en ASP .NET con C#

Leer una base de datos de Microsoft Access, presentar los datos en un objeto DataTable de ASP .NET, generar por código los encabezados y las columnas y mostrar la ruta a la base de datos en una etiqueta con diseño personalizado, en C#

Microsoft tiene un artículo titulado “How to retrieve and display records from an Access database by using ASP.NET, ADO.NET and Visual C# .NET” para .NET Framework 1. Basado en ese artículo se presenta este ejercicio que consiste en leer una base de datos de Microsoft Access y presentar los datos en un objeto DataTable de ASP .NET. El ejercicio tiene 2 versiones: C# y VB, y una base de datos llamada Clientes.accdb con una única tabla llamada ClientesTb y 5 campos: Id, Nombre, Apellidos, Cargo y Teléfono.

Se comenta el ejercicio en C# y al final se proporciona el código completo tanto para C# como para VB .NET, las diferencias entre ambos son pequeñas.

Sigue leyendo “DataTable desde Microsoft Access en ASP .NET con C#”

Hoja de Excel en ASP .NET con C#

Mostrar una hoja de cálculo de Excel en una página web dinámica aspx usando un rango de celdas como origen de datos de un DataGrid, en C#

ADO .NET proporciona métodos para conectar con diferentes almacenes de datos. En este ejercicio se utilizan clases pertenecientes a los espacios de nombres System.Data y System.Data.OleDb para conectar con una hoja de cálculo de Microsoft Excel. Un grupo de celdas de la hoja de cálculo, englobadas en un rango con nombre, hace la función de tabla del DataSet que es mostrada en el DataGrid.

Sigue leyendo “Hoja de Excel en ASP .NET con C#”

Agenda telefónica desde archivo XML en C#

Leer una agenda telefónica desde un archivo XML que actúa como origen de los datos mostrándolos en un control DataGridView personalizado cuyos registros se pueden filtrar con sentencias SQL, en Visual Studio 2017 con C#

En este ejercicio se diseña una sencilla aplicación de agenda telefónica que lee los datos desde un archivo XML en lugar de hacerlo desde una base de datos. Las principales características del ejercicio son:

  1. Lectura desde un archivo XML, configurado como origen de los datos
  2. Mostrar los datos en un control DataGridView personalizado
  3. Filtrar registros utilizando sentencias SQL desde objetos DataView
  4. Actualizar el origen de los datos con los cambios realizados en DataGridView.
Sigue leyendo “Agenda telefónica desde archivo XML en C#”

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:

Sigue leyendo “Captura de pantalla o ventana activa en C#”

Quitar por código el 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.

Sigue leyendo “Quitar por código el botón cerrar de la ventana en C#”

Abrir Regedit en la clave superior desde C# y VB

Abrir el Editor del Registro (Regedit) en la clave superior Mi PC como en las versiones antiguas de Windows y no en la última clave visitada manipulando cadenas del registro, con C# y Visual Basic

En los sistemas operativos Windows anteriores a XP el programa Regedit abre siempre en la clave superior del árbol del registro (Mi PC). En cambio, en Windows XP y posteriores, abre en la última clave visitada. Esto es muy cómodo cuando se necesita abrir con frecuencia el registro para tareas de mantenimiento o configuración. Sin embargo algunas personas pueden preferir el comportamiento anterior. En este ejercicio se diseña una aplicación para abrir Regedit en MiPC y sirve para mostrar cómo acceder al registro de Windows desde Visual Basic .NET

Sigue leyendo “Abrir Regedit en la clave superior desde C# y VB”

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.

Sigue leyendo “Formularios en hilos separados en C# y VB”