Personalizando controles de .NET

En un proyecto reciente me topé con algunos detalles que me parecieron incómodos de .NET.

El primero fue con los TextBoxes. Quería que al posicionar el cursor sobre ellos, se seleccionara automáticamente todo el texto. Nunca encontré una propiedad que lo hiciera, y de todos modos, sería molesto estar modificando esa propiedad en cada uno.

Esto también me afectaba en el MaskedTextBox. Si por ejemplo, tienes una máscara de cuatro dígitos, puedes poner el cursor en cualquiera de las cuatro posiciones y escribir a partir de ahí. Entonces, quise que desde el principio esté todo el cuadro seleccionado y, además, que al quitar el cursor se ajuste el texto de nuevo todo a la izquierda.

¿Qué es lo más fácil en estos casos? Hacer un control que herede de estos.

Sigue leyendo “Personalizando controles de .NET”

Anuncios

Inserciones condicionales

Cuando hacemos una inserción como ésta:

public void EsStoredProcedure(ref SqlCommand comando, bool esSP) {
    if (esSP)
        comando.CommandType = CommandType.StoredProcedure;
    else
        comando.CommandType = CommandType.Text;
}

Estamos haciendo mucho rollo para darle valor a una sola variable. Esto no solo afecta estéticamente a nuestro programa. También ocupa algunos bits de más si podemos resumirlo a una sola línea.

En C#, una inserción condicional es cuando “incluimos” el if dentro de la inserción, de esta manera:

public void EsStoredProcedure(ref SqlCommand comando, bool esSP) {
    comando.CommandType = (esSP ? CommandType.StoredProcedure : CommandType.Text);
}

La inserción condicional se divide en tres partes: la condición (if), el resultado si la condición es positiva (true) y el resultado si la condición es negativa (false). La condición es seguida por un signo de interrogación, y los dos resultados se dividen con un signo de dos puntos.

En VB.NET, existe una función llamada Iif, que hace más o menos lo mismo:

Public Sub EsStoredProcedure(ByRef comando As SqlCommand, ByVal esSP As Boolean) 
    comando.CommandType = Iif(esSP, CommandType.StoredProcedure, CommandType.Text)
End Sub 

La diferencia es que C# evalúa solamente la condición y la inserción que se va a realizar, mientras VB evalúa las tres expresiones en la función Iif. Esto es un punto negativo, pues nos podemos topar con esta situación:

Public Function ObtenerDato(ByRef tabla As DataTable) As String
    Return Iif (tabla.Rows.Count > 0, tabla.Rows(0)("columna").ToString(), "")
End Function

En VB se evalúan las tres expresiones durante la ejecución. Suponiendo que la tabla no tiene ninguna fila, la aplicación generará un error de tipo NullReferenceException, pues la segunda parte de la función llama a una columna dentro de una fila inexistente.

Por cosas como ésta, prefiero C# sobre VB.NET.

VB.NET – Propiedades (diferencias con C#)

Como continuación al post anterior, sobre Propiedades en C#, en éste voy a explicar cómo se declaran estos elementos en VisualBasic.NET.

Sigue leyendo “VB.NET – Propiedades (diferencias con C#)”

C# – Propiedades

En .NET podemos crear y utilizar un elemento especial, denominado Propiedad, que aunque a simple vista parece ser una variable cualquiera, puede esconder una funcionalidad tan compleja como lo necesitemos.

Sigue leyendo “C# – Propiedades”

C#: Valor nulo para tipos de datos comunes

Es extraño incorrecto ridículo estúpido curioso que a los datos de tipo int, string, char, byte, float, double, etc. no se les pueda asignar un valor nulo. Esto no sería de importancia para nosotros si no fuera porque en C#, siempre debemos darle un valor a toda variable al ser inicializada, ya sea utilizando el constructor de su clase o, como solemos hacer para solventar este problema, inicializarla con valor nulo. ¿Pero qué hacemos si la clase no nos permite asignar este valor? Muy fácilmente nos toparemos con este problema mientras programamos, pero existe una solución.

Sigue leyendo “C#: Valor nulo para tipos de datos comunes”

.NET Framework

Habrá quienes den con este blog queriendo saber qué es esto del .NET, con qué se come. En este primer post hablaré de lo que trata esta plataforma y los distintos ámbitos de desarrollo que abarca y para lo que nos es útil.

Sigue leyendo “.NET Framework”

Bienvenidos

Hola y bienvenidos a este espacio en la red, en el que compartiré mis conocimientos y experiencias de desarrollo y programación.

Este blog, como el nombre lo indica, estará dedicado principalmente a Microsoft .NET Framework, aunque también hablaré sobre SQL Server, HTML, Javascript, CSS, y cualquier aspecto relacionado con la programación en lo que tenga algún conocimiento.

Aunque es en parte algo personal, espero que sirva a quienes me visiten como un apoyo y guía en sus proyectos, cuando se queden atorados. Son libres de solicitar que hable de algún tema (claro, mientras esté en mis posibilidades :P)