Acerca de:

Este blog contiene los códigos, ejemplos y bases de datos que he usado cuando aprendía acerca de algún tema específico. En lugar de borrarlos (una vez dominado ya el tema), he decidido publicarlos :)

lunes, 30 de marzo de 2015

Recorrer todos los controles en un contenedor: .Net y Java Swing

En este ejemplo, se quiere habilitar los controles de un contenedor en función al valor de selección de un checkbox.

En el caso de Java, el contenedor es un jPanel:

En Java 7:

for (Component c : jPanel1.getComponents())
    c.setEnabled(jcheckBox1.isSelected());
   
En Java 8:

Arrays.stream(jPanel1.getComponents()).forEach(c -> c.setEnabled(jcheckBox1.isSelected()));

Si sólo se quiere procesar los controles que sean cajas de texto:

Arrays.stream(jPanel1.getComponents()).forEach(c -> { if (c instanceof JTextField) c.setEnabled(jcheckBox1.isSelected()); } );

En el caso de .Net, el contenedor es un GroupBox:

foreach (Control c in groupBox1.Controls) 
       c.Enabled = checkBox1.Checked;

Usando Linq será:
groupBox1.Controls.Cast<Control>().ToList().ForEach(c => c.Enabled = checkBox1.Checked);

Si sólo se quiere procesar los controles que sean cajas de texto:
groupBox1.Controls.Cast<Control>().ToList().ForEach(c => { if (c is TextBox) c.Enabled = checkBox1.Checked; });

viernes, 6 de marzo de 2015

Cómo separar el nombre de un archivo y la carpeta donde está almacenado (y otras cosillas de la clase Path)


Basta usar el espacio de nombres System.IO y hacer:

string filePath = "C:\\una Carpeta\\un archivo.txt";

Console.WriteLine(Path.GetFileName(filePath));

Console.WriteLine(Path.GetDirectoryName(filePath));


El resultado es:


De forma inversa, si tengo:

string miarchivo = "un archivo.txt";

string miCarpeta = "C:\\mi Carpeta";

Console.WriteLine(Path.Combine(miCarpeta, miarchivo));

El resultado es:



Path.Combine ya añade el caracter de separación entre miarchivo y miCarpeta.

Por otro lado, si se hace:

Console.WriteLine(Path.DirectorySeparatorChar);

Console.WriteLine(Path.PathSeparator);

El resultado será:


Path.DirectorySeparatorChar devuelve el separador de rutas a archivos y carpetas, Path.PathSeparator devuelve el separador de las rutas de las variables de entorno.