Buscar este blog

martes, 9 de marzo de 2010

Accesando a un renglon o columna de un TableLayoutPanel

Es muy sencillo acceder a una columna o renglón específicos de un TableLayoutPanel simplemente se accede a ellos por la propiedad RowStyles o ColumnStyles, ambas son colecciones de columnas o renglones.

Por ejemplo para ocultar un renglón:

table.RowStyles[0].Height = 0;

lunes, 8 de marzo de 2010

Obteniendo el tamaño más apropiado para un Label

Los controles label de Windows.Forms tienen un método muy para determinar el tamaño que necesita el control para dibujarse, el método es GetPreferredSize, el método nos devuelve un objeto Size con el ancho y alto adecuados para el control.

Aquí les dejo el ejemplo:

label1.GetPreferredSize(new Size(0, 0));

sábado, 6 de marzo de 2010

Medir el ancho en pantalla de una cadena

Este pequeño truco nos da el ancho en pantalla de una cadena según se vería en un determinado control:

Graphics.FromHwnd(Control1.Hwnd).MeasureString(string1, Control1.Font);

viernes, 5 de marzo de 2010

Pruebas unitarias con Visual Studio

Desde Visual Studio 2005 en algunas versiones tenemos la opción de crear proyectos de pruebas unitarias, para crear un proyecto de este tipo vamos al menú archivo -> Add -> New Project y en el dialogo de nuevo proyecto seleccionamos Test Project como se ve en la imagen:

 
 

Una vez creado el proyecto nos crea una clase de prueba unitaria como ejemplo para usarla añadimos una referencia al proyecto que queremos probar en el que por ejemplo tenemos la siguiente clase:

public class Prueba {
        public int PruebaMiembro {
            get { return 1; }
        }
    }

Para probarla añadimos el siguiente código a la clase demostrativa que creo Visual Studio:

[TestMethod]
    public void TestMethod1() {
        Prueba p = new Prueba();
        Assert.AreEqual(1, p.PruebaMiembro);
    }

y listo.
Podemos correr las pruebas que tengamos, en modo normal o de depuración, y ver los resultados desde el menú de pruebas o desde el panel vista de pruebas (Test View) desde el cual podemos seleccionar solo algunas pruebas o todas como se muestra en la siguiente imagen:


Los resultados se muestran en el panel de resultado de pruebas podemos dar doble click y ver los detalles de la ejecución incluyendo la posición en el código en que fallo en caso de que esto ocurra y si ejecutamos en modo de depuración podemos establecer puntos de ruptura en los que se detiene la ejecución y podemos depurar normalmente.


Para aprender más acerca de las pruebas unitarias con .Net Framework visita:
Lista de artículos acerca de pruebas unitarias con .Net Framework

jueves, 4 de marzo de 2010

Elementos html de servidor

Como sabemos es posible usar cualquier elemento html en asp.net como un control de servidor añadiendo el atributo runat="server" en la etiqueta del control.
Lo que quizá no todos sabemos es que se puede utilizar el atributo InnerText en cualquier elemento de html al que convirtamos en control de servidor, aún cuando intelisense no nos marque el atributo como válido.
De esta forma podemos modificar el contenido del control programaticamente  o usando expresiones.
Aquí esta el ejemplo:

<h1 runat="server" InnerText="<%$ Resources:Labels, Ejemplo %>" />

miércoles, 3 de marzo de 2010

Deteccion de dispositivos mobiles en Asp.Net con libreria de www.51degrees.mobi

Hace unos días que estoy trabajando en la detección de dispositivos móviles con el api que se encuentra disponible en: http://www.51degrees.mobi/Products/NETMobileAPI.
El objetivo es mandar a tus visitas de dispositivos limitados a una pagina diseñada para las características  de un dispositivo reducido.
A primera vista estas librerías se ven muy buenas: son fáciles de usar y ofrecen un soporte muy amplio.
Sin embargo a la hora de ponerlas en producción fallan rotundamente frecuentemente detectan Internet Explorer 6 como móvil y mas frecuentemente ocurre lo mismo con Safari.
Como conclusión en Marzo de 2010 esta api no tiene la robustez necesaria para hacer el trabajo que propone, espero que este articulo le ahorre tiempo a quien este evaluando una api de estas características.

martes, 2 de marzo de 2010

Cómo terminar la sesión de un usuario del Membership provider de asp.net

Para terminar la sesión de un usuario logueado mediante el Membership provider de asp.net, utiliza el siguiente código:

       FormsAuthentication.SignOut()
       Response.Redirect(FormsAuthentication.LoginUrl)


La segunda línea simplemente redirige a la página establecida como inicio de sesión en el archivo web.config de la aplicación.
Otra manera simple de hacerlo es simplemente colocar el tag LoginStatus que automáticamente añade un vínculo para cerrar la sesión.