Categories
.NET

Instancia única de Formularios

Generalmente al trabajar con aplicaciones que tengan formularios MDI, se requiere que sólo exista una instancia de un formulario a la vez, si bien es cierto que ésto se puede lograr usando el patrón Singleton, esta forma de hacerlo se dificulta al tener una cantidad considerable de formularios hijos.

A continuación se muestra un método genérico para tener sólo una instancia por formulario:

csharp:

public Hashtable instancias = new Hashtable();

public Form AbrirVentana(Type tipo)
{
        return AbrirVentana(tipo.FullName);
}

public Form AbrirVentana(string tipo)
{
        try
        {
                Form formulario = instancias[tipo] as Form; // Recuperar la instancia, si existe
                if (formulario == null || formulario.IsDisposed)
                {
                        // Usar Reflection para crear una instancia
                        formulario = (Form)Activator.CreateInstance(null, tipo).Unwrap();
                        instancias[tipo] = formulario;
                }
                if (this.IsMdiContainer)
                        formulario.MdiParent = this;

                formulario.Activate();
                formulario.WindowState = FormWindowState.Normal;
                formulario.Show();
                return formulario;
        }
        catch (Exception ex)
        {
                // Procesar el error
                throw ex; // return null;
        }
}

Al código mostrado arriba falta hacerle unas cuantas modificaciones para darle un poco más de flexibilidad (puesto que sólo se basa en el tipo), pero para empezar creo que está bien.

Archivos Relacionados

Categories
PHP

Tips para PHP

Una pequeña colección de tips para los aférrimos usuarios de PHP 😀

Categories
Accesibilidad CSS Diseño Usabilidad

Accessites.org: sitios bonitos, accesibles y usables

¿Quién dice que los sitios accesibles tienen que ser aburridos y sordidos? para desaparecer este mito Mike Cherim ha lanzado Accessites.org donde se reunen sitios que demuestran que la accesibilidad no es una cosa aburrida.

Categories
.NET Quiz

Quiz sobre C# – Excepciones

Para los amantes de C# :-D, cuál es la diferencia entre las excepciones producidas por Foo1 y Foo2?

csharp:

using System;
class Program
{
    static void Main(string[] args)
    {
        try {
            Foo1();
        }
        catch (Exception ex) {
            Console.WriteLine(ex.ToString());
        }
        Console.WriteLine("------------------");
        try {
            Foo2();
        }
        catch (Exception ex) {
            Console.WriteLine(ex.ToString());
        }
    }
    private static void Foo1()
    {
        try {
            Bar();
        }
        catch (Exception ex) {
            throw ex;
        }
    }
    private static void Foo2()
    {
        try {
            Bar();
        }
        catch (Exception ex) {
            throw;
        }
    }
    private static void Bar()
    {
        throw new Exception("Error!");
    }
}
Categories
.NET Artí­culos ASP.NET JavaScript

Subiendo múltiples archivos con .NET

Debido a algunos comentarios que recibí en la entrada "Enviar y/o subir multiples archivos adjuntos al estilo GMail" (varios se perdieron por problemas con el hosting) y algunos mails que he recibido, mostraré la forma de subir múltiples archivos con .NET.