Ver por etiquetas

Todas las etiquetas » C# » tips (RSS)
  Os cuento una rápida que seguro os va a solucionar un montón de quebraderos de cabeza y que me ha traído loco un rato hasta que me he dado cuenta del pufo. Todo viene cuando estás usando el patrón MVVM y varías algún dato que se está mostrando en algún componente visual. Todos los tutoriales te dicen que heredes de ObservableCollection y que implementes el método NotifyPropertyChanged() . Y te ponen el típico ejemplo: public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged...
A veces resulta curioso cómo algo tan sencillo como mapear una estructura de C en .NET se puede convertir en un algo muy cercano a una pesadilla dependiendo del lenguaje que hayamos elegido para realizarlo. Partamos de la siguiente estructura de C: typedef struct { BYTE byOut[4]; // Outputs [0..3] BYTE byAux; // Aux output } usbOutput; A simple vista es algo muy elemental: un array de cuatro bytes y uno más después. Esto en una máquina Intel en realidad termina ocupando 8 bytes, 4 para el primer...
Ahora que están de moda los antipatrones, voy a explicar un patrón que es muy famoso pero que no me gusta absolutamente nada, no por el diseño del mismo, sino por los efectos laterales no deseados que genera. Por ello también voy a explicar otra forma de construirlo que me gusta más, aunque adolece de otras limitaciones. Singleton es un patrón que nos obliga a tener una sola instancia de una clase, es decir, globalmente sólo podremos disponer de un objeto de ese...
21 comment(s)
Archivado en: ,,,
Introducción Hay un tema que ha aparecido indirectamente en algunos mensajes del grupo de C# relativo al tema de Interop mediante atributos (que es el único que puede hacer C# y VB.NET), y que desde que estoy leyendo dicho grupo nadie ha advertido o ha tenido algún problema con él, o al menos yo no me he dado cuenta de ello. Cuando uno hace una llamada al API de Win32, muchas funciones devuelven un estado de error a través de un handle inválido o simplemente devolviendo FALSE . Es una consecuencia...
con no comments
Archivado en: ,,
Generalmente cuando trabajo con gráficos suelo pintar sobre el área cliente de la propia ficha, pero esta vez he tenido que hacerlo por narices en un panel. Activar el sistema de doble buffer de una ficha es muy sencillo, tenemos que cambiar su estilo y aplicarlo. Algo así: this .SetStyle( ControlStyles .OptimizedDoubleBuffer | ControlStyles .ResizeRedraw | ControlStyles .AllPaintingInWmPaint, true ); this .UpdateStyles(); El primer valor de ControlStyles indica que se va a activar el doble buffer...
4 comment(s)
Archivado en: ,
Esta entrada va a ser muy cortita. Es una pregunta dejada al aire, por si alguien la quiere recoger... Existe la estructura RectangleF , que es un rectángulo con sus coordenadas marcadas en coma flotante. Existen infinitud de métodos que permiten dibujar y operar con dichas estructuras como elementos de delimitación ( DrawString , DrawImage , DrawEllipse , etc, etc...) Entonces, ¿por qué no existe un método Invalidate que nos acepte un RectangleF? Evidentemente existe un workaround , y es crear una...
7 comment(s)
Archivado en: ,