Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

929 artículos publicados

TRUCO: Cómo averiguar si una ventana ha sido cerrada por el usuario

Las ventanas de Windows (formularios Windows Forms) se pueden cerrar, bien por parte del usuario, o bien mediante programa con el método Close(). Pero ¿cómo distinguir ambos casos? En Visual Basic "clásico" era muy fácil hacerlo dentro del evento QueryUnload gracias al parámetro UnloadMode. Sin embargo en .NET no es tan sencillo averiguarlo. Aunque no es tan flexible como el evento QueryUnload mencionado, la solución que se expone a continuación soluciona el problema. Se trata de subclasificar el procedimiento de la ventana y verificar que el mensaje que se está produciendo es WM_SYSCOMMAND con el parámetro SC_CLOSE, ... [Más]

Detectar la existencia de una instancia previa de nuestra aplicación

En Visual Basic "clásico" existía una propiedad del objeto App llamada PrevInstance que permitía averiguar de manera sencilla si ya se estaba ejecutando la aplicación actual, de forma que era inmediato evitar que se ejecutase dos veces el mismo programa. En .NET no existe nada similar pero es muy fácil simularlo gracias a la clase Process del espacio de nombres System.Diagnostics. El siguiente código permite conseguirlo: private static bool PrevInstance(){      Process[] procesos = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);      return (procesos.Length > 1);} Lo que h... [Más]

TRUCO: Cómo obtener los nombres de una enumeración

En muchos programas se suelen dar a los usuarios una serie de opciones para que escoja. Por ejemplo un tipo de búsqueda a realizar, un rango de posibles valores para parametrizar algún comportamiento, etc... Lo más habitual es que estas opciones se "mapeen" después a elementos de una enumeración en el código de la capa de negocio. De esta forma si definimos una similar a esta: public enum EstadoCivil{  Casado,  Soltero,  Divorciado,  Viudo,  Religioso,} lo más común será que en la interfaz de usuario exista un modo de seleccionar algún valor equivalente, por ejemplo a través de una li... [Más]

FAQ: Al pasar al servidor de producción me deja de funcionar la seguridad y me da un error ¿por qué?

Una pregunta frecuente que recibimos tanto en los cursos de campusMVP como en eventos es la de:

"¿Por qué cuando paso mi aplicación a producción de repente me deja de funcionar todo lo que tiene que ver con Membership, Roles, etc...? De hecho obtengo un error de que no se puede conectar a la base de datos..."

El problema que tienes con la base de datos es que, por defecto, el proveedor de SQL Server que viene con ASP.NET parte de la base (equivocada generalmente) de que vas a usar SQL Server Express Edition. Esta base de datos tiene la particularidad de que... [Más]

VÍDEO: Cómo elegir el idioma de una aplicación web desde una lista desplegable

Una necesidad muy habitual en la de crear aplicaciones web multi-idioma. Es decir, aplicaciones web que se adapten a las preferencias de idioma de cada usuario que la visita. Dicha adaptación puede ser automática, sin que el usuario tenga que hacer nada, o voluntaria, cuando el usuario puede elegir su idioma de preferencia desde la propia interfaz de la aplicación. Curiosamente, en ASP.NET la parte fácil es la automática, ya que solo hay que crear los recursos para cada idioma disponible en la aplicación (carpetas App_LocalResources y App_GlobalResources y los archivos .resx para cada idioma). Luego, gracias a las características de localización automática de .NET, con un simple ajuste en web.config podemos hacer que la aplicación se adapte automáticamente al id... [Más]

TRUCO: Procesado de listas en paralelo de forma sencilla

La Task Parallel Library es una biblioteca que apareció con .NET 4.0 y cuya misión es facilitar la vida a los programadores a la hora de construir aplicaciones multi-subproceso y con hilos. La biblioteca es muy extensa pero tiene pequeñas joyas a las que les podemos sacar partido de manera directa y sencilla, sin necesidad de meternos en honduras. Una de estas joyas es la versión paralela de un bucle For Each. La idea es que si tenemos que procesar una lista de objetos de cualquier tipo (desde simples números o cadenas hasta objetos más complejos) y no nos importa en qué orden se procesen, sólo que se les aplique a todos una misma función, entonces el ForEach paralelo es lo que necesitamos para agilizar nuestra aplicación. Este método cogerá una l... [Más]