viernes, 14 de mayo de 2010

Disparar un beep en .net

Actualmente se puede desde .net (vb.net o c#) reproducir facilmente un beep, ya sea desde una aplicación de consola o de forms.
En el namespace de sistema System.Media podemos encontrar La clase SystemSounds que nos deja acceder a este tipo de recursos de sonido, la forma es la siguiente:

System.Media.SystemSounds.Beep.Play();

Tambien se puede acceder a otros sonidos del sistema como de errores o información, etc.

martes, 13 de abril de 2010

Ajax no anda en chrome o safari

Visual Studio parece generar siempre paginas que andan en internet explorer, pero que tienen varios(o muchos) problemas en otros browsers.
Es el caso de Google Chrome por ejemplo. En .net 3.5 con los controles del ajaxControlToolkit tengo problemas de carga de extenders, scripts que no se cargan, asi que encontre esta solución.
En vez de usar el viejo ScriptManager se usa el nuevo que viene con el AjaxControlToolkit: ToolkitScriptManager

Por ejemplo asi:



<ajax:toolkitscriptmanager id="scripts" runat="server" scriptmode="Release" enablehistory="true" EnableSecureHistoryState="false" EnablePageMethods="True" CombineScripts="true" >
<Scripts>
<asp:ScriptReference Path="~/chrome.js" />
</Scripts>
</ajax:ToolkitScriptManager>

crear un archivo chrome.js y llenarlo con:
Sys.Browser.WebKit = {}; //Safari 3 is considered WebKit
if (navigator.userAgent.indexOf('WebKit/') > -1) {
Sys.Browser.agent = Sys.Browser.WebKit;
Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
Sys.Browser.name = 'WebKit';
}


Visual Studio 2008 no reconoce las paginas aspx

Puede que Visual Studio 2008 deje de reconocer las paginas aspx (markups, formatos, sintaxis t coloreo) y otro tipo de paginas tambien. Ocurre de un dia para el otro y no hay forma de desinstalar e instalar y que funcione.
Para esto encontre una solucion muy simple, hay que abrir el "Visual Studio 2008 command prompt" y correr lo siguiente:
devenv.exe /ResetSkipPkgs

Esto resetea parametros del entorno y todo comienza a andar normalmente desde ese momento (al menos hasta ahora...)

lunes, 12 de abril de 2010

Reproducir sonidos o wav en .net

En C# o vb.net es muy simple reproducir sonidos gracias a la inclusion del sound player, una vez definido se le especifica que sonido tiene que cargar (con el nombre de archivo en disco) y luego simplemente dandole "Play" lo reproduce:


System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.SoundLocation = @"c:\sonidos\sonido.wav";
player.Play();

definir cosas que se ejecutan solo en debug en C#

Cuando uno quiere que ciertas cosas se ejecuten o se vean cuando se debugea, o al reves, cuando se ejecuta en release, tiene que usar directivas de preprocesador, definiendo variables. Hay una que ya esta definida por default, esta es DEBUG (está en true en modo debug, false en release).

Entonces podemos hacer esto:

#if DEBUG
Console.WriteLine("Estoy en debug");
Control1.Visible=true;
#else
Console.WriteLine("Estoy en Release");
Control1.Visible=false;
#endif

domingo, 11 de abril de 2010

Ocultar y mostrar cursor o puntero del mouse c#

Para ocultar el puntero del ratón se debe llamar al objeto Cursor, este tiene varios metodos pero el que vamos a usar es el hide, asi:

Cursor.Hide();

Si deseamos hacer aparecer o mostrar el mouse nuevamente, haremos:

Cursor.Show();


domingo, 28 de marzo de 2010

DoEvents en C#

El equivalente a DoEvents del viejo vb6 es el mismo en c#, pero escondido, es decir, no es una función global, lo accederemos asi:

Application.DoEvents();

Si tenes que acceder desde una clase, debes poner esto:
System.Windows.Forms.Application.DoEvents();