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();