<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>La Villa Digital &#187; .NET</title>
	<atom:link href="http://www.lavilladigital.com/tag/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lavilladigital.com</link>
	<description></description>
	<lastBuildDate>Fri, 03 Jun 2011 10:42:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<image>
<link>http://www.lavilladigital.com</link>
<url>http://www.lavilladigital.com/wp-content/mbp-favicon/HP-Monitor.ico</url>
<title>La Villa Digital</title>
</image>
		<item>
		<title>Almacenamiento local de datos en Windows Phone</title>
		<link>http://www.lavilladigital.com/2011/03/22/almacenamiento-local-de-datos-en-windows-phone/</link>
		<comments>http://www.lavilladigital.com/2011/03/22/almacenamiento-local-de-datos-en-windows-phone/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 15:24:02 +0000</pubDate>
		<dc:creator>Pablo Palomo</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#.NET]]></category>
		<category><![CDATA[C#NET]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[IsolatedStorage]]></category>
		<category><![CDATA[IsolatedStorageFile]]></category>
		<category><![CDATA[IsolatedStorageSettings]]></category>
		<category><![CDATA[móvil]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">http://www.lavilladigital.com/?p=1354</guid>
		<description><![CDATA[Almacenamiento de datos en WP7 La programación de aplicaciones para Windows Phone tiene, a mi modo de ver, un defecto importante en lo que se refiere a almacenamiento de datos. [...]


Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2011/03/25/base-de-datos-xml-en-windows-phone-7/' rel='bookmark' title='Permanent Link: Base de datos XML en Windows Phone 7'>Base de datos XML en Windows Phone 7</a> <small>En el post de hoy explicaremos la manera de tener...</small></li>
<li><a href='http://www.lavilladigital.com/2011/03/23/windows-phone-7-isolated-storage-explorer/' rel='bookmark' title='Permanent Link: Windows Phone 7 Isolated Storage Explorer'>Windows Phone 7 Isolated Storage Explorer</a> <small>Navegando por la red me he encontrado con una fantástica...</small></li>
<li><a href='http://www.lavilladigital.com/2011/03/15/detectar-si-hay-conexion-de-datos-en-wp7/' rel='bookmark' title='Permanent Link: Detectar si hay conexión de datos en WP7'>Detectar si hay conexión de datos en WP7</a> <small>En esta entrada explicaremos como detectar si existe conexión de...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h3><a href="http://www.lavilladigital.com/wp-content/uploads/2011/02/Windows_Phone_logo.jpg"><img class="aligncenter size-medium wp-image-1308" title="Windows_Phone_logo" src="http://www.lavilladigital.com/wp-content/uploads/2011/02/Windows_Phone_logo-300x54.jpg" alt="" width="300" height="54" /></a></h3>
<h3>Almacenamiento de datos en WP7</h3>
<p style="text-align: justify;">La programación de aplicaciones para Windows Phone tiene, a mi modo de ver, un defecto importante en lo que se refiere a almacenamiento de datos. En esta plataforma no existe una Base de Datos interna del teléfono donde podamos guardar y acceder a los datos de nuestra aplicación. No sé si en un futuro esto cambiará pero de momento Microsoft sigue con su idea de almacenamiento en la nube. Es decir, la filosofía de Windows Phone es utilizaar Internet para guardar todos los datos. No es una mala teoría porque los datos estarían a salvo de problemas con el dispositivo y serían accesibles siempre, pero si no tenemos una tarifa de datos estamos perdidos.</p>
<p style="text-align: justify;">En este post trataré de explicar las diferentes opciones para almacenar datos que tenemos. Básicamente son 2: Isolated Storage o almacenamiento en local y almacenamiento en Base de Datos en la nube. En este post nos centraremos en el almacenamiento con Isolated Storage.</p>
<h3 style="text-align: justify;">¿Qué es Isolated Storage?</h3>
<p style="text-align: justify;">El almacenamiento de datos con Isolated Storage o almacenamiento aislado es una forma de guardar los datos en archivos locales que lleva en uso desde Silverlight 2. Solo nuestra aplicación tiene acceso a sus archivos, por eso se llama almacenamiento aislado. No es posible compartir datos entre dos aplicaciones con este sistema.</p>
<p style="text-align: justify;"><a href="http://www.lavilladigital.com/wp-content/uploads/2011/03/windows-phone-7-silverlight-programming-isolated-storage-1.png"><img class="aligncenter size-full wp-image-1355" title="windows-phone-7-silverlight-programming--isolated-storage-1" src="http://www.lavilladigital.com/wp-content/uploads/2011/03/windows-phone-7-silverlight-programming-isolated-storage-1.png" alt="" width="550" height="295" /></a></p>
<p style="text-align: justify;">El almacenamiento de datos con Isolated Storage o almacenamiento aislado es una forma de guardar los datos en archivos locales que lleva en uso desde Silverlight 2. Solo nuestra aplicación tiene acceso a sus archivos, por eso se llama almacenamiento aislado. No es posible compartir datos entre dos aplicaciones con este sistema ya que no son visible entre dos espacios de aplicación diferentes.</p>
<p style="text-align: justify;">Existen dos tipos de almacenamiento en local. Usando almacenamiento de pares clave y valor (IsolatedStorageSettings) y usando archivos y directorios (IsolatedStorageFile).</p>
<h4 style="text-align: justify;">IsolatedStorageSettings</h4>
<p style="text-align: justify;">Este tipo de almacenamiento permite guardar parejas de nombre y valor directamente en tu dispositivo (sin necesidad de crear ni administrar la lista de datos). Una vez guardados los datos podemos recuperarlos mediante su clave.</p>
<p style="text-align: justify;">La información permanecerá en el teléfono mientras la aplicación no se desinstale o se borre desde la aplicación. No se pierde al apagar el teléfono. En el siguiente código se implementa una función de almacenaje y otra de recuperación.</p>
<p style="text-align: justify;"><div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;"><span class="kw1">private</span> <span class="kw1">void</span> SaveValue<span class="br0">&#40;</span><span class="kw4">string</span> clave, <span class="kw4">string</span> valor<span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span>IsolatedStorageSettings.<span class="me1">ApplicationSettings</span>.<span class="me1">Contains</span><span class="br0">&#40;</span>clave<span class="br0">&#41;</span><span class="br0">&#41;</span>
                IsolatedStorageSettings.<span class="me1">ApplicationSettings</span><span class="br0">&#91;</span>clave<span class="br0">&#93;</span> <span class="sy0">=</span> valor<span class="sy0">;</span>
            <span class="kw1">else</span>
                IsolatedStorageSettings.<span class="me1">ApplicationSettings</span>.<span class="me1">Add</span><span class="br0">&#40;</span>clave, valor<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
            IsolatedStorageSettings.<span class="me1">ApplicationSettings</span>.<span class="me1">Save</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span></pre></div></div></p>
<p style="text-align: justify;"><div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;"><span class="kw1">private</span> <span class="kw4">string</span> RetrieveValue<span class="br0">&#40;</span><span class="kw4">string</span> clave<span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span>IsolatedStorageSettings.<span class="me1">ApplicationSettings</span>.<span class="me1">Contains</span><span class="br0">&#40;</span>clave<span class="br0">&#41;</span><span class="br0">&#41;</span>
                <span class="kw1">return</span> IsolatedStorageSettings.<span class="me1">ApplicationSettings</span><span class="br0">&#91;</span>clave<span class="br0">&#93;</span>.<span class="me1">ToString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw1">else</span>
                <span class="kw1">return</span> <span class="kw1">default</span><span class="br0">&#40;</span><span class="kw4">string</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span></pre></div></div></p>
<p>Podemos saber la cantidad de pares clave-valor que hemos guardado mediante la función:</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;">IsolatedStorageSettings.<span class="me1">ApplicationSettings</span>.<span class="me1">Count</span></pre></div></div>
<p>&nbsp;</p>
<h4>IsolatedStorageFile</h4>
<p style="text-align: justify;">Mediante el método IsolatedStorageFile nuestra aplicación será capaz de guardar datos de la aplicación en ficheros locales localizados en la partición privada de nuestra aplicación. Podemos gestionar carpetas para organizar mejor nuestros datos si queremos.<br />
En la siguiente función podemos ver como guardar un objeto (instáncia de clase) en el archivo datos.xml.</p>
<p style="text-align: justify;"><div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;"><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">void</span> StoreObject<span class="br0">&#40;</span><span class="kw4">Object</span> obj<span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            IsolatedStorageFile appStore <span class="sy0">=</span> IsolatedStorageFile.<span class="me1">GetUserStoreForApplication</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw1">using</span> <span class="br0">&#40;</span>IsolatedStorageFileStream fileStream <span class="sy0">=</span> appStore.<span class="me1">OpenFile</span><span class="br0">&#40;</span><span class="st0">&quot;datos.xml&quot;</span>, <span class="kw5">System.<span class="me1">IO</span></span>.<span class="me1">FileMode</span>.<span class="me1">Create</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
            <span class="br0">&#123;</span>
                DataContractSerializer serializer <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> DataContractSerializer<span class="br0">&#40;</span><a href="http://www.google.com/search?q=typeof+msdn.microsoft.com"><span class="kw3">typeof</span></a><span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                serializer.<span class="me1">WriteObject</span><span class="br0">&#40;</span>fileStream, obj<span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span></pre></div></div></p>
<p>Y ahora recuperaremos el dato del fichero:</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;"><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">Object</span> RetrieveObject<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            <span class="kw4">Object</span> obj <span class="sy0">=</span> <span class="kw1">default</span><span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span><span class="sy0">;</span>
            IsolatedStorageFile appStore <span class="sy0">=</span> IsolatedStorageFile.<span class="me1">GetUserStoreForApplication</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span>appStore.<span class="me1">FileExists</span><span class="br0">&#40;</span><span class="st0">&quot;datos.xml&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
            <span class="br0">&#123;</span>
                <span class="kw1">using</span> <span class="br0">&#40;</span>IsolatedStorageFileStream fileStream <span class="sy0">=</span> appStore.<span class="me1">OpenFile</span><span class="br0">&#40;</span><span class="st0">&quot;datos.xml&quot;</span>, <span class="kw5">System.<span class="me1">IO</span></span>.<span class="me1">FileMode</span>.<span class="me1">Open</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
                <span class="br0">&#123;</span>
                    DataContractSerializer serializer <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> DataContractSerializer<span class="br0">&#40;</span><a href="http://www.google.com/search?q=typeof+msdn.microsoft.com"><span class="kw3">typeof</span></a><span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    obj <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span>serializer.<span class="me1">ReadObject</span><span class="br0">&#40;</span>fileStream<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
            <span class="kw1">return</span> obj<span class="sy0">;</span>
        <span class="br0">&#125;</span></pre></div></div>
<p><a href="http://geeks.ms/blogs/creneses/archive/2010/10/07/wp7-almacenamiento-de-archivos-en-local.aspx" target="_blank">Aquí </a>os dejo un artículo de &#8220;Un Informático en Construcción&#8221; que está muy bien y donde guardan textos en IsolatedStorageFile, por si os interesa.</p>
<p>Espero haber sido de ayuda. Iremos ampliando el contenido de nuestros tutoriales para Windows Phone 7.</p>
<p>Y para que os pongáis tontorrones os dejo este temazo de Daughtry:</p>
<p>
<div class="spotify">
	<div class="meta">
		<a class="play" title="Open in Spotify" href="spotify:track:5YkgWsK3JxyMcGjW7QEJqG">&nbsp;</a>
	</div>
	<div class="albumcover">
		<a href="spotify:album:14h4lZGOWrhv1RDKztzd6D"><img src="http://open.spotify.com/thumb/cbbe86d41adaafb72a60b4ebe05e7688db4d6a7f" /></a>
	</div>
	<div class="trackinfo">
		<a href="spotify:track:5YkgWsK3JxyMcGjW7QEJqG" id="track" class="stylish">Life After You</a>
		<a href="spotify:artist:5P5FTygHyx2G57oszR3Wot" id="artist" class="stylish"><div></div>Daughtry</a>
		<a href="spotify:album:14h4lZGOWrhv1RDKztzd6D" id="album" class="stylish"><div></div>Life After You</a>
	</div>
	<iframe src="http://www.facebook.com/plugins/like.php?href=http://open.spotify.com/track/5YkgWsK3JxyMcGjW7QEJqG&amp;layout=standard&amp;show_faces=false&amp;action=like&amp;colorscheme=dark" width="100%" scrolling="no" frameborder="0"  onload="this.style.display='inline-block';" allowTransparency="true"></iframe>
</div>
</p>


<p>Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2011/03/25/base-de-datos-xml-en-windows-phone-7/' rel='bookmark' title='Permanent Link: Base de datos XML en Windows Phone 7'>Base de datos XML en Windows Phone 7</a> <small>En el post de hoy explicaremos la manera de tener...</small></li>
<li><a href='http://www.lavilladigital.com/2011/03/23/windows-phone-7-isolated-storage-explorer/' rel='bookmark' title='Permanent Link: Windows Phone 7 Isolated Storage Explorer'>Windows Phone 7 Isolated Storage Explorer</a> <small>Navegando por la red me he encontrado con una fantástica...</small></li>
<li><a href='http://www.lavilladigital.com/2011/03/15/detectar-si-hay-conexion-de-datos-en-wp7/' rel='bookmark' title='Permanent Link: Detectar si hay conexión de datos en WP7'>Detectar si hay conexión de datos en WP7</a> <small>En esta entrada explicaremos como detectar si existe conexión de...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.lavilladigital.com/2011/03/22/almacenamiento-local-de-datos-en-windows-phone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uso del control Popup en WP7</title>
		<link>http://www.lavilladigital.com/2011/03/17/uso-de-control-popup-en-wp7/</link>
		<comments>http://www.lavilladigital.com/2011/03/17/uso-de-control-popup-en-wp7/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 11:06:42 +0000</pubDate>
		<dc:creator>Pablo Palomo</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#.NET]]></category>
		<category><![CDATA[C#NET]]></category>
		<category><![CDATA[ListBox]]></category>
		<category><![CDATA[móvil]]></category>
		<category><![CDATA[Popup]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">http://www.lavilladigital.com/?p=1350</guid>
		<description><![CDATA[En este post intentaremos profundizar un poco en el uso del Control Popup en aplicaciones para Windows Phone 7. Crearemos una simple aplicación que muestre un menú dentro de un [...]


Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2011/03/03/carga-de-diferentes-paginas-en-wp7-aplicacion-multipagina/' rel='bookmark' title='Permanent Link: Carga de diferentes páginas en WP7 (Aplicación Multipágina)'>Carga de diferentes páginas en WP7 (Aplicación Multipágina)</a> <small>Este post se ha escrito más a modo de ayuda...</small></li>
<li><a href='http://www.lavilladigital.com/2011/03/13/uso-del-control-listbox-en-wp7/' rel='bookmark' title='Permanent Link: Uso del control ListBox en WP7'>Uso del control ListBox en WP7</a> <small>En este tutorial intentaremos explicar de una forma sencilla el...</small></li>
<li><a href='http://www.lavilladigital.com/2011/03/15/detectar-si-hay-conexion-de-datos-en-wp7/' rel='bookmark' title='Permanent Link: Detectar si hay conexión de datos en WP7'>Detectar si hay conexión de datos en WP7</a> <small>En esta entrada explicaremos como detectar si existe conexión de...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">En este post intentaremos profundizar un poco en el uso del <strong>Control Popup</strong> en aplicaciones para <strong>Windows Phone 7</strong>. Crearemos una simple aplicación que muestre un menú dentro de un popup emergente. Lo primero será añadir un par de iconos que utilizaremos en nuestro Application bar. Al añadir un icono a nuestro proyecto es de vital importancia cambiar ciertas propiedades. El campo <strong>Build Action</strong> debe tener valor<strong> Content</strong> y el campo <strong>Copy to Output Directory</strong> debe ser <strong>Copy if newer</strong>. Si no seleccionamos estos parámetros no se mostrarán nuestros iconos en la aplicación.</p>
<p style="text-align: justify;">Empecemos con el código, ésta es la definición XAML de nuestro Popup:</p>
<p style="text-align: justify;"><div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;Popup</span> <span class="re0">x:Name</span>=<span class="st0">&quot;ContextMenuPopup&quot;</span> <span class="re0">Height</span>=<span class="st0">&quot;364&quot;</span> <span class="re0">Width</span>=<span class="st0">&quot;389&quot;</span> <span class="re0">Margin</span>=<span class="st0">&quot;38,0,29,6&quot;</span> <span class="re0">VerticalAlignment</span>=<span class="st0">&quot;Bottom&quot;</span> <span class="re0">HorizontalAlignment</span>=<span class="st0">&quot;Center&quot;</span><span class="re2">&gt;</span></span>
     <span class="sc3"><span class="re1">&lt;ListBox</span> <span class="re0">FontSize</span>=<span class="st0">&quot;40&quot;</span> <span class="re0">SelectionChanged</span>=<span class="st0">&quot;ListBox_SelectionChanged&quot;</span><span class="re2">&gt;</span></span>
          <span class="sc3"><span class="re1">&lt;ListBoxItem</span> <span class="re0">Content</span>=<span class="st0">&quot;Item Number 1&quot;</span> <span class="re2">/&gt;</span></span>
          <span class="sc3"><span class="re1">&lt;ListBoxItem</span> <span class="re0">Content</span>=<span class="st0">&quot;Item Number 2&quot;</span> <span class="re2">/&gt;</span></span>
          <span class="sc3"><span class="re1">&lt;ListBoxItem</span> <span class="re0">Content</span>=<span class="st0">&quot;Item Number 3&quot;</span> <span class="re2">/&gt;</span></span>
          <span class="sc3"><span class="re1">&lt;ListBoxItem</span> <span class="re0">Content</span>=<span class="st0">&quot;Item Number 4&quot;</span> <span class="re2">/&gt;</span></span>
     <span class="sc3"><span class="re1">&lt;/ListBox<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/Popup<span class="re2">&gt;</span></span></span></pre></div></div></p>
<p style="text-align: justify;">Como podemos ver, el código anterior simplemente define un objeto Popup llamado ContextMenuPopup de 364 píxels de altura y 389 de ancho. Dentro definimos un ListBox que contendrá los items de nuestro menú. En este caso cargaremos 4 items.</p>
<p style="text-align: justify;">Este Popup por defecto será invisible en la iterfaz de usuario. Ahora veremos como mostrarlo en el evento click de un item que hemos definido en la ApplicationBar:</p>
<p style="text-align: justify;"><div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;"><span class="kw1">private</span> <span class="kw1">void</span> ApplicationBarIconButton_Click<span class="br0">&#40;</span><span class="kw4">object</span> sender, EventArgs e<span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            ContextMenuPopup.<span class="me1">IsOpen</span> <span class="sy0">=</span> true<span class="sy0">;</span>
        <span class="br0">&#125;</span></pre></div></div></p>
<p style="text-align: justify;">Como vemos es muy simple hacer visible nuestro Popup. De igual manera se puede hacer invisible:</p>
<p style="text-align: justify;"><div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;">ContextMenuPopup.<span class="me1">IsOpen</span> <span class="sy0">=</span> false<span class="sy0">;</span></pre></div></div></p>
<p style="text-align: justify;">En nuestra aplicación haremos invisible el Popup al hacer click en uno de sus items y seguidamente cargaremos una página diferente.</p>
<p style="text-align: justify;"><div id="wpshdo_9" class="wp-synhighlighter-outer"><div id="wpshdt_9" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_9"></a><a id="wpshat_9" class="wp-synhighlighter-title" href="#codesyntax_9"  onClick="javascript:wpsh_toggleBlock(9)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_9" onClick="javascript:wpsh_code(9)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_9" onClick="javascript:wpsh_print(9)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_9" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;"><span class="kw1">private</span> <span class="kw1">void</span> ListBox_SelectionChanged<span class="br0">&#40;</span><span class="kw4">object</span> sender, SelectionChangedEventArgs e<span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            ContextMenuPopup.<span class="me1">IsOpen</span> <span class="sy0">=</span> false<span class="sy0">;</span>
            var sel <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>ListBox<span class="br0">&#41;</span>ContextMenuPopup.<span class="me1">Child</span><span class="br0">&#41;</span>.<span class="me1">SelectedItem</span><span class="sy0">;</span>
            <span class="kw1">switch</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span>ListBoxItem<span class="br0">&#41;</span>sel<span class="br0">&#41;</span>.<span class="me1">Content</span>.<span class="me1">ToString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
            <span class="br0">&#123;</span>
                <span class="kw1">case</span> <span class="st0">&quot;Item Number 1&quot;</span><span class="sy0">:</span>
                    NavigationService.<span class="me1">Navigate</span><span class="br0">&#40;</span><a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Uri<span class="br0">&#40;</span><span class="st0">&quot;/Pages/Page1.xaml&quot;</span>, UriKind.<span class="me1">Relative</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    break<span class="sy0">;</span>
&nbsp;
                <span class="kw1">case</span> <span class="st0">&quot;Item Number 2&quot;</span><span class="sy0">:</span>
                    NavigationService.<span class="me1">Navigate</span><span class="br0">&#40;</span><a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Uri<span class="br0">&#40;</span><span class="st0">&quot;/Pages/Page1.xaml&quot;</span>, UriKind.<span class="me1">Relative</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    break<span class="sy0">;</span>
&nbsp;
                <span class="kw1">case</span> <span class="st0">&quot;Item Number 3&quot;</span><span class="sy0">:</span>
                    NavigationService.<span class="me1">Navigate</span><span class="br0">&#40;</span><a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Uri<span class="br0">&#40;</span><span class="st0">&quot;/Pages/Page1.xaml&quot;</span>, UriKind.<span class="me1">Relative</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    break<span class="sy0">;</span>
&nbsp;
                <span class="kw1">case</span> <span class="st0">&quot;Item Number 4&quot;</span><span class="sy0">:</span>
                    NavigationService.<span class="me1">Navigate</span><span class="br0">&#40;</span><a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Uri<span class="br0">&#40;</span><span class="st0">&quot;/Pages/Page1.xaml&quot;</span>, UriKind.<span class="me1">Relative</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    break<span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span></pre></div></div></p>
<p style="text-align: justify;">Es una aplicación muy simple pero que espero os sirva para entender mejor este control.</p>
<p style="text-align: justify;"><a href="http://www.lavilladigital.com/wp-content/uploads/2011/03/popupcontrol.png"><img class="aligncenter size-medium wp-image-1351" title="popupcontrol" src="http://www.lavilladigital.com/wp-content/uploads/2011/03/popupcontrol-183x300.png" alt="" width="183" height="300" /></a></p>
<p>Aquí os podéis descargar el código:</p>
<p>Archivo: <a href="http://www.lavilladigital.com/?file_id=8" target="_blank">PopupControl.zip</a></p>
<p style="text-align: justify;">Y que mejor que escuchar canciones potentes como esta mientras programas, ahí os dejo la coletilla:</p>
<p style="text-align: justify;">
<div class="spotify">
	<div class="meta">
		<a class="play" title="Open in Spotify" href="spotify:track:4HUYjDgnAHkrNCihQo7J5C">&nbsp;</a>
	</div>
	<div class="albumcover">
		<a href="spotify:album:0rhgCL7z1RROeZdEZKpAEK"><img src="http://open.spotify.com/thumb/b352605b6d41244f45c1bcd67cede808b2113d83" /></a>
	</div>
	<div class="trackinfo">
		<a href="spotify:track:4HUYjDgnAHkrNCihQo7J5C" id="track" class="stylish">Unfinished</a>
		<a href="spotify:artist:49qiE8dj4JuNdpYGRPdKbF" id="artist" class="stylish"><div></div>Stone Sour</a>
		<a href="spotify:album:0rhgCL7z1RROeZdEZKpAEK" id="album" class="stylish"><div></div>Audio Secrecy</a>
	</div>
	<iframe src="http://www.facebook.com/plugins/like.php?href=http://open.spotify.com/track/4HUYjDgnAHkrNCihQo7J5C&amp;layout=standard&amp;show_faces=false&amp;action=like&amp;colorscheme=dark" width="100%" scrolling="no" frameborder="0"  onload="this.style.display='inline-block';" allowTransparency="true"></iframe>
</div>
</p>


<p>Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2011/03/03/carga-de-diferentes-paginas-en-wp7-aplicacion-multipagina/' rel='bookmark' title='Permanent Link: Carga de diferentes páginas en WP7 (Aplicación Multipágina)'>Carga de diferentes páginas en WP7 (Aplicación Multipágina)</a> <small>Este post se ha escrito más a modo de ayuda...</small></li>
<li><a href='http://www.lavilladigital.com/2011/03/13/uso-del-control-listbox-en-wp7/' rel='bookmark' title='Permanent Link: Uso del control ListBox en WP7'>Uso del control ListBox en WP7</a> <small>En este tutorial intentaremos explicar de una forma sencilla el...</small></li>
<li><a href='http://www.lavilladigital.com/2011/03/15/detectar-si-hay-conexion-de-datos-en-wp7/' rel='bookmark' title='Permanent Link: Detectar si hay conexión de datos en WP7'>Detectar si hay conexión de datos en WP7</a> <small>En esta entrada explicaremos como detectar si existe conexión de...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.lavilladigital.com/2011/03/17/uso-de-control-popup-en-wp7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Detectar si hay conexión de datos en WP7</title>
		<link>http://www.lavilladigital.com/2011/03/15/detectar-si-hay-conexion-de-datos-en-wp7/</link>
		<comments>http://www.lavilladigital.com/2011/03/15/detectar-si-hay-conexion-de-datos-en-wp7/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 09:56:32 +0000</pubDate>
		<dc:creator>Pablo Palomo</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#.NET]]></category>
		<category><![CDATA[C#NET]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[móvil]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">http://www.lavilladigital.com/?p=1344</guid>
		<description><![CDATA[En esta entrada explicaremos como detectar si existe conexión de datos en nuestra aplicación Windows Phone. Nos puede ser de mucha utilidad si queremos controlar errores en nuestra aplicación si [...]


Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2011/03/22/almacenamiento-local-de-datos-en-windows-phone/' rel='bookmark' title='Permanent Link: Almacenamiento local de datos en Windows Phone'>Almacenamiento local de datos en Windows Phone</a> <small>Almacenamiento de datos en WP7 La programación de aplicaciones para...</small></li>
<li><a href='http://www.lavilladigital.com/2011/03/03/carga-de-diferentes-paginas-en-wp7-aplicacion-multipagina/' rel='bookmark' title='Permanent Link: Carga de diferentes páginas en WP7 (Aplicación Multipágina)'>Carga de diferentes páginas en WP7 (Aplicación Multipágina)</a> <small>Este post se ha escrito más a modo de ayuda...</small></li>
<li><a href='http://www.lavilladigital.com/2011/02/25/acceso-a-datos-desde-wp7-a-tablas-mysql/' rel='bookmark' title='Permanent Link: Acceso a datos desde WP7 a tablas MySQL'>Acceso a datos desde WP7 a tablas MySQL</a> <small>&nbsp; Supongo que empiezo la casa por el tejado pero...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">En esta entrada explicaremos como detectar si existe conexión de datos en nuestra aplicación Windows Phone. Nos puede ser de mucha utilidad si queremos controlar errores en nuestra aplicación si es que esta utiliza acceso a la nube. La función es muy simple, detecta si hay conexión Wifi, 3G, etc. y devuelve el resultado.</p>
<p style="text-align: justify;">Empezaremos añadiendo la referencia a System.Net.NetworkInformation.</p>
<p style="text-align: justify;"><div id="wpshdo_10" class="wp-synhighlighter-outer"><div id="wpshdt_10" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_10"></a><a id="wpshat_10" class="wp-synhighlighter-title" href="#codesyntax_10"  onClick="javascript:wpsh_toggleBlock(10)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_10" onClick="javascript:wpsh_code(10)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_10" onClick="javascript:wpsh_print(10)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_10" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;"><span class="kw1">using</span> <span class="co3">System.Net.NetworkInformation</span><span class="sy0">;</span></pre></div></div></p>
<p style="text-align: justify;">Y esta sería nuestra función:</p>
<p style="text-align: justify;"><div id="wpshdo_11" class="wp-synhighlighter-outer"><div id="wpshdt_11" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_11"></a><a id="wpshat_11" class="wp-synhighlighter-title" href="#codesyntax_11"  onClick="javascript:wpsh_toggleBlock(11)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_11" onClick="javascript:wpsh_code(11)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_11" onClick="javascript:wpsh_print(11)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_11" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;"><span class="kw1">private</span> <span class="kw4">bool</span> InternetIsAvailable<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>NetworkInterface.<span class="me1">GetIsNetworkAvailable</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
            <span class="br0">&#123;</span>
                MessageBox.<span class="me1">Show</span><span class="br0">&#40;</span><span class="st0">&quot;No tienes conexión de internet.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">return</span> false<span class="sy0">;</span>
            <span class="br0">&#125;</span>
            <span class="kw1">else</span>
            <span class="br0">&#123;</span>
                MessageBox.<span class="me1">Show</span><span class="br0">&#40;</span><span class="st0">&quot;Tienes conexión de internet.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">return</span> true<span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span></pre></div></div></p>
<p style="text-align: justify;">Un ejemplo de como se llama a la función desde el programa principal de la página.</p>
<p style="text-align: justify;"><div id="wpshdo_12" class="wp-synhighlighter-outer"><div id="wpshdt_12" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_12"></a><a id="wpshat_12" class="wp-synhighlighter-title" href="#codesyntax_12"  onClick="javascript:wpsh_toggleBlock(12)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_12" onClick="javascript:wpsh_code(12)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_12" onClick="javascript:wpsh_print(12)" title="Print code"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.lavilladigital.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_12" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;"><span class="kw1">public</span> MainPage<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            InitializeComponent<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
            <span class="kw1">if</span> <span class="br0">&#40;</span>InternetIsAvailable<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
            <span class="br0">&#123;</span>
                textBox1.<span class="me1">Text</span> <span class="sy0">=</span> <span class="st0">&quot;Conectado a Internet&quot;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
            <span class="kw1">else</span>
            <span class="br0">&#123;</span>
                textBox1.<span class="me1">Text</span> <span class="sy0">=</span> <span class="st0">&quot;No Conectado a Internet&quot;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
&nbsp;
        <span class="br0">&#125;</span></pre></div></div></p>
<p><a href="http://www.lavilladigital.com/wp-content/uploads/2011/03/connectiontest.png"><img class="aligncenter size-full wp-image-1345" title="connectiontest" src="http://www.lavilladigital.com/wp-content/uploads/2011/03/connectiontest.png" alt="" width="305" height="554" /></a></p>
<p>Aquí os podéis descargar el código:</p>
<p>Archivo: <a href="http://www.lavilladigital.com/?file_id=7">ConnectionTest.zip</a></p>
<p>Que menos que rematar este post con un tema de los que hacen época&#8230; Broken Wings de Alter Bridge. A disfrutar!</p>
<p>
<div class="spotify">
	<div class="meta">
		<a class="play" title="Open in Spotify" href="spotify:track:3454jBKLY9vk1oV0UbPLxL">&nbsp;</a>
	</div>
	<div class="albumcover">
		<a href="spotify:album:11J6PFpQxsPeezJNvfZ2kd"><img src="http://open.spotify.com/thumb/e72281bc286dc860c6b84b2626be93ff76368e11" /></a>
	</div>
	<div class="trackinfo">
		<a href="spotify:track:3454jBKLY9vk1oV0UbPLxL" id="track" class="stylish">Broken Wings</a>
		<a href="spotify:artist:5iGO0dxTUHHcl0e8wrSn6T" id="artist" class="stylish"><div></div>Alter Bridge</a>
		<a href="spotify:album:11J6PFpQxsPeezJNvfZ2kd" id="album" class="stylish"><div></div>One Day Remains</a>
	</div>
	<iframe src="http://www.facebook.com/plugins/like.php?href=http://open.spotify.com/track/3454jBKLY9vk1oV0UbPLxL&amp;layout=standard&amp;show_faces=false&amp;action=like&amp;colorscheme=dark" width="100%" scrolling="no" frameborder="0"  onload="this.style.display='inline-block';" allowTransparency="true"></iframe>
</div>
</p>
<p>&nbsp;</p>


<p>Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2011/03/22/almacenamiento-local-de-datos-en-windows-phone/' rel='bookmark' title='Permanent Link: Almacenamiento local de datos en Windows Phone'>Almacenamiento local de datos en Windows Phone</a> <small>Almacenamiento de datos en WP7 La programación de aplicaciones para...</small></li>
<li><a href='http://www.lavilladigital.com/2011/03/03/carga-de-diferentes-paginas-en-wp7-aplicacion-multipagina/' rel='bookmark' title='Permanent Link: Carga de diferentes páginas en WP7 (Aplicación Multipágina)'>Carga de diferentes páginas en WP7 (Aplicación Multipágina)</a> <small>Este post se ha escrito más a modo de ayuda...</small></li>
<li><a href='http://www.lavilladigital.com/2011/02/25/acceso-a-datos-desde-wp7-a-tablas-mysql/' rel='bookmark' title='Permanent Link: Acceso a datos desde WP7 a tablas MySQL'>Acceso a datos desde WP7 a tablas MySQL</a> <small>&nbsp; Supongo que empiezo la casa por el tejado pero...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.lavilladigital.com/2011/03/15/detectar-si-hay-conexion-de-datos-en-wp7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A vueltas con .NET: ComboBox Multi-Columna</title>
		<link>http://www.lavilladigital.com/2009/05/22/a-vueltas-con-net-combobox-multi-columna/</link>
		<comments>http://www.lavilladigital.com/2009/05/22/a-vueltas-con-net-combobox-multi-columna/#comments</comments>
		<pubDate>Fri, 22 May 2009 13:21:48 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[VB.NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ComboBox]]></category>

		<guid isPermaLink="false">http://www.lavilladigital.com/?p=1019</guid>
		<description><![CDATA[Aunque parezca mentira Visual Basic 2008 no incorpora por defecto un ComboBox capaz de mostrar varias columnas de datos. La única manera de hacerlo es programarlo nosotros mismos o buscar [...]


Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2009/04/24/a-vueltas-con-net-minimizar-formulario-en-la-barra-de-tareas/' rel='bookmark' title='Permanent Link: A vueltas con .NET: Minimizar formulario en la barra de tareas'>A vueltas con .NET: Minimizar formulario en la barra de tareas</a> <small>Desde hace algún algo más de un mes estoy aprendiendo...</small></li>
<li><a href='http://www.lavilladigital.com/2009/05/05/a-vueltas-con-net-modificar-connection-strings-en-runtime/' rel='bookmark' title='Permanent Link: A vueltas con .NET: Modificar Connection Strings en Runtime'>A vueltas con .NET: Modificar Connection Strings en Runtime</a> <small>Esto del .NET me parece alucinante, la de cosas que...</small></li>
<li><a href='http://www.lavilladigital.com/2009/06/22/liberkey-el-multi-usos-suizo-de-las-aplicaciones-portables/' rel='bookmark' title='Permanent Link: LiberKey, el multi-usos suizo de las aplicaciones portables'>LiberKey, el multi-usos suizo de las aplicaciones portables</a> <small>Las aplicaciones portalbes están a la orden del día. Cada...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Aunque parezca mentira Visual Basic 2008 no incorpora por defecto un<strong> ComboBox</strong> capaz de mostrar varias columnas de datos. La única manera de hacerlo es programarlo nosotros mismos o buscar ese control por Internet.</p>
<p style="text-align: justify;">Como ya os imaginais a estas alturas, no vamos a inventar nada que ya esté inventado y funcione perfectamente. Por tanto, vamos a añadir el control capaz de hacer lo que queremos y explicar cómo utilizarlo para mostrar los datos que nos interese. En nuestro caso vamos a utilizar el control <a href="http://www.vbaccelerator.com/home/NET/Code/Controls/ListBox_and_ComboBox/Icon_ComboBox/article.asp" target="_blank">Icon ComboBox</a>, creado por Steve McMahon, de la conocida página <a href="http://www.vbaccelerator.com/home/index.asp" target="_blank">vbaccelerator</a></p>
<p><img class="size-full wp-image-1038 alignleft" title="iconcombobox" src="http://www.lavilladigital.com/wp-content/uploads/2009/05/iconcombobox.png" alt="iconcombobox" width="183" height="194" /></p>
<p>¿Cómo añadir el control a nuestro proyecto?</p>
<p>Lo primero será <a href="http://vbaccelerator.com/zip.asp?id=13034" target="_blank">descargar</a> el control.</p>
<p style="text-align: justify;">Una vez descargado tenemos que <strong>añadir </strong>el control al <em>toolbox </em>de nuestro proyecto. Clickando con el botón derecho del ratón encima del <em>toolbox </em>marcamos &#8220;<em>Choose Items</em>&#8220;, dentro del nuevo menú le damos a <em>Browse </em>y seleccionamos el archivo .dll del control.</p>
<p style="text-align: justify;">Llegados a éste punto tenemos el nuevo control <strong>añadido </strong>al <em>toolbox </em>y listo para usarse. Lo siguiente será añadir el control al formulario, declararlo, modificar los aspectos visuales y empezar a pasarle valores. Vamos a ello.</p>
<p>Añadir el control al formulario se hace igual que cualquier otro control de los que vienen por defecte en Visual Studio, por tanto <strong>arrastramos </strong>el control al formulario y empezamos a trabajar con él.</p>
<p><strong>Declaramos </strong>el control. Como veis se trata de definir cuántas columnas va a tener el control y el espacio que van a ocupar:</p>
<pre class="brush: vb">

Dim column As IconComboBoxColumn = New IconComboBoxColumn

&#039;Por defecto el control ya trae una columna, sólo cambiamos su tamaño
IconComboDepartamento.Columns(0).ColumnWidth = 128

&#039;Segunda columna
column.ColumnWidth = 32
IconComboDepartamento.Columns.Add(column)

&#039;Tercera columna

column = New IconComboBoxColumn
column.ColumnWidth = 96
IconComboDepartamento.Columns.Add(column)
</pre>
<p>Ya tenemos el control declarado, ahora solo falta <strong>poblarlo </strong>y mostrarlo. El método para poblar el control consiste en añadirle Items, cada item es una linea del combobox y a cada item le añadiremos tantos subitems como columnas tengamos en el control. Con el ejemplo queda más claro.</p>
<pre class="brush: vb">

Dim ici As IconComboItem = New IconComboItem
ici.Text = &quot;Informática&quot;

Dim subitem As IconComboSubItem = New IconComboSubItem
subitem.Text = &quot;5 trabajadores&quot;
ici.SubItems.Add(subitem)

subitem = New IconComboSubItem
subitem.Text = &quot;Piso superior&quot;
ici.SubItems.Add(subitem)

IconComboDepartamento.Items.Add(ici)
</pre>
<p>De éste manera hemos añadido una linea al combobox de 3 columnas.</p>


<p>Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2009/04/24/a-vueltas-con-net-minimizar-formulario-en-la-barra-de-tareas/' rel='bookmark' title='Permanent Link: A vueltas con .NET: Minimizar formulario en la barra de tareas'>A vueltas con .NET: Minimizar formulario en la barra de tareas</a> <small>Desde hace algún algo más de un mes estoy aprendiendo...</small></li>
<li><a href='http://www.lavilladigital.com/2009/05/05/a-vueltas-con-net-modificar-connection-strings-en-runtime/' rel='bookmark' title='Permanent Link: A vueltas con .NET: Modificar Connection Strings en Runtime'>A vueltas con .NET: Modificar Connection Strings en Runtime</a> <small>Esto del .NET me parece alucinante, la de cosas que...</small></li>
<li><a href='http://www.lavilladigital.com/2009/06/22/liberkey-el-multi-usos-suizo-de-las-aplicaciones-portables/' rel='bookmark' title='Permanent Link: LiberKey, el multi-usos suizo de las aplicaciones portables'>LiberKey, el multi-usos suizo de las aplicaciones portables</a> <small>Las aplicaciones portalbes están a la orden del día. Cada...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.lavilladigital.com/2009/05/22/a-vueltas-con-net-combobox-multi-columna/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>A vueltas con .NET: Modificar Connection Strings en Runtime</title>
		<link>http://www.lavilladigital.com/2009/05/05/a-vueltas-con-net-modificar-connection-strings-en-runtime/</link>
		<comments>http://www.lavilladigital.com/2009/05/05/a-vueltas-con-net-modificar-connection-strings-en-runtime/#comments</comments>
		<pubDate>Tue, 05 May 2009 07:50:43 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[VB.NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ConnectionString]]></category>
		<category><![CDATA[Runtime]]></category>

		<guid isPermaLink="false">http://www.lavilladigital.com/?p=943</guid>
		<description><![CDATA[Esto del .NET me parece alucinante, la de cosas que se pueden llegar a hacer de forma rápida y sencilla es enorme. Sin hablar de la cantidad ingente de ejemplos [...]


Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2009/05/22/a-vueltas-con-net-combobox-multi-columna/' rel='bookmark' title='Permanent Link: A vueltas con .NET: ComboBox Multi-Columna'>A vueltas con .NET: ComboBox Multi-Columna</a> <small>Aunque parezca mentira Visual Basic 2008 no incorpora por defecto...</small></li>
<li><a href='http://www.lavilladigital.com/2009/04/24/a-vueltas-con-net-minimizar-formulario-en-la-barra-de-tareas/' rel='bookmark' title='Permanent Link: A vueltas con .NET: Minimizar formulario en la barra de tareas'>A vueltas con .NET: Minimizar formulario en la barra de tareas</a> <small>Desde hace algún algo más de un mes estoy aprendiendo...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Esto del <strong>.NET</strong> me parece alucinante, la de cosas que se pueden llegar a hacer de forma rápida y sencilla es enorme. Sin hablar de la cantidad ingente de ejemplos y ayuda que podemos encontrar por Internet. Sin embargo, me he encontrado con un problema.</p>
<p style="text-align: justify;">En una aplicación que estoy haciendo necesito poder leer los datos de diferentes bases de datos en función del dominio en el que se ha autentificado el usuario. Las bases de datos corresponden a diferentes fábricas alrededor del mundo así que necesito poder cambiar el <a href="http://msdn.microsoft.com/es-es/library/system.configuration.configurationmanager.connectionstrings.aspx" target="_blank">ConnectionString</a> que utilizan los <strong>DataSets</strong> en tiempo de ejecución.  Después de indagar ésto es lo que he conseguido, espero que alguien le ayude.</p>
<p style="text-align: justify;">Lo primero que debemos hacer es declarar los diferentes <em>ConnectionString</em> que podemos utilizar, en nuestro caso lo haremos dentro de  <em>My Project -&gt; Settings.</em></p>
<p><img class="alignnone size-full wp-image-966" title="mysettings" src="http://www.lavilladigital.com/wp-content/uploads/2009/05/mysettings.jpg" alt="mysettings" width="472" height="116" /></p>
<p style="text-align: justify;">En mi caso tengo 3 Connection Strings, uno de ellos (<em>ConnectionString</em>) es el que utilizan los diferentes <em>DataSets </em>y los otros dos (<em>SpainConnectionString</em> y <em>ChinaConnectionString</em>) son los diferentes valores que puede tomar la primera variable. En la misma pantalla de <em>Settings</em> le damos a <em>ViewCode</em> y saltaremos al código de la clase Settings  que nos permite utilizar <strong>eventos </strong>específicos de esa clase.</p>
<pre class="brush: vb">

Namespace My
&#039;This class allows you to handle specific events on the settings class:
&#039; The SettingChanging event is raised before a setting&#039;s value is changed.
&#039; The PropertyChanged event is raised after a setting&#039;s value is changed.
&#039; The SettingsLoaded event is raised after the setting values are loaded.
&#039; The SettingsSaving event is raised before the setting values are saved.
Partial Friend NotInheritable Class MySettings
Public WriteOnly Property ChangeConnectionString() As String
Set(ByVal Value As String)
My.Settings(&quot;ConnectionString&quot;) = Value
End Set
End Property
End Class
End Namespace
</pre>
<p style="text-align: justify;">Éste es el código que <strong>modifica </strong>el valor de la variable <em>ConnectionString</em> (también se puede utilizar para cambiar culaquier valor de la clase My Setting), ahora debemos llamar a éste proceso con el valor que nos interese.</p>
<p style="text-align: justify;">En nuestro caso miramos el dominio del usuario y el rango de IP&#8217;s del usuario.</p>
<pre class="brush: vb">
Private Sub GetDomain(ByVal HostName As String)
&#039;Buscamos el dominio al que corresponde la ip que tenemos asignada,
&#039;no el dominio al que nos hemos
&#039;logueado desde Windows
Dim Direcciones As IPAddress() = Dns.GetHostAddresses(HostName)
&#039;Recorremos todos los posibles dominios y cargamos el portal del dominio correspondiente
Select Case Mid(Mid(Direcciones(0).ToString(), 9), 1, InStr(Mid(Direcciones(0).ToString(), 9), &quot;.&quot;) - 1)
Case My.Settings.SPAIN_IP
My.Settings.ChangeConnectionString = My.Settings.SPAINConnectionString
Case My.Settings.CHINA_IP
My.Settings.ChangeConnectionString = My.Settings.CHINAConnectionString
Case Else
&#039;Si llegamos aqui es que no estamos en ningun dominio conocido, por tanto cerramos el portal
End Select
End Sub
</pre>
<p>Espero que os sea de ayuda.</p>


<p>Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2009/05/22/a-vueltas-con-net-combobox-multi-columna/' rel='bookmark' title='Permanent Link: A vueltas con .NET: ComboBox Multi-Columna'>A vueltas con .NET: ComboBox Multi-Columna</a> <small>Aunque parezca mentira Visual Basic 2008 no incorpora por defecto...</small></li>
<li><a href='http://www.lavilladigital.com/2009/04/24/a-vueltas-con-net-minimizar-formulario-en-la-barra-de-tareas/' rel='bookmark' title='Permanent Link: A vueltas con .NET: Minimizar formulario en la barra de tareas'>A vueltas con .NET: Minimizar formulario en la barra de tareas</a> <small>Desde hace algún algo más de un mes estoy aprendiendo...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.lavilladigital.com/2009/05/05/a-vueltas-con-net-modificar-connection-strings-en-runtime/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>A vueltas con .NET: Minimizar formulario en la barra de tareas</title>
		<link>http://www.lavilladigital.com/2009/04/24/a-vueltas-con-net-minimizar-formulario-en-la-barra-de-tareas/</link>
		<comments>http://www.lavilladigital.com/2009/04/24/a-vueltas-con-net-minimizar-formulario-en-la-barra-de-tareas/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 07:27:18 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[VB.NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Barra de tareas]]></category>
		<category><![CDATA[System Tray]]></category>
		<category><![CDATA[Taskbar]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://www.lavilladigital.com/?p=868</guid>
		<description><![CDATA[Desde hace algún algo más de un mes estoy aprendiendo a programar con en .Net con Visual Basic 2008. Lo estoy haciendo totalmente auto-didacta así que hasta dentro de un [...]


Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2009/05/05/a-vueltas-con-net-modificar-connection-strings-en-runtime/' rel='bookmark' title='Permanent Link: A vueltas con .NET: Modificar Connection Strings en Runtime'>A vueltas con .NET: Modificar Connection Strings en Runtime</a> <small>Esto del .NET me parece alucinante, la de cosas que...</small></li>
<li><a href='http://www.lavilladigital.com/2009/05/22/a-vueltas-con-net-combobox-multi-columna/' rel='bookmark' title='Permanent Link: A vueltas con .NET: ComboBox Multi-Columna'>A vueltas con .NET: ComboBox Multi-Columna</a> <small>Aunque parezca mentira Visual Basic 2008 no incorpora por defecto...</small></li>
<li><a href='http://www.lavilladigital.com/2009/10/02/%c2%bfpuede-javascript-enviar-un-formulario-por-mail/' rel='bookmark' title='Permanent Link: ¿Puede Javascript enviar un formulario por mail?'>¿Puede Javascript enviar un formulario por mail?</a> <small>¿Puede Javascript enviar un formulario por mail? La respuesta es...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Desde hace algún algo más de un mes estoy aprendiendo a programar con en <strong>.Net</strong> con <strong>Visual Basic 2008</strong>. Lo estoy haciendo totalmente auto-didacta así que hasta dentro de un tiempo no habrá gran cosa&#8230; Se me ha ocurrido colgar todas las dudas que me asalten y encuentre su solución en<em> &#8220;El Interné&#8221;</em>, por si a alguien le puede servir de ayuda.</p>
<p style="text-align: justify;">El caso de hoy trata de minimizar nuestro <strong>formulario </strong>y colocarlo en la barra de tareas de Windows (<a href="http://en.wikipedia.org/wiki/System_tray" target="_blank">System Tray</a>), no es gran cosa pero es un comienzo, no? <img src='http://www.lavilladigital.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Lo que debemos hacer es añadir un <a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.aspx" target="_blank">NotifyIcon</a> a nuestro formulario y, si queremos que quede más bonito, añadirle un <a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.contextmenu.aspx" target="_blank">ContextMenu</a>. La finalidad de éste control es crear un menú cuando hagamos click encima del <strong>NotifyIcon</strong>. Añadimos el siguiente codigo al evente de cerrar del formulario que queremos ocultar.</p>
<pre class="brush: vb">

&#039;En lugar de cerrar el programa lo vamos esconder y mostrar el icono del IconTray

Private Sub frmPortal_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing

&#039;Primero lo minimizamos

Me.WindowState = FormWindowState.Minimized

Me.ShowInTaskbar = True

&#039;Ahora lo hacemos invisible y cancelamos el evento de cerrar

Me.Visible = False

e.Cancel = True

End Sub
</pre>
<p style="text-align: justify;">Hasta ahora lo que hemos echo es esconder el formulario pero todavia no veremos ningún icono en la barra de tareas.</p>
<p style="text-align: justify;">En mi caso no voy a usar un <strong>ContextMenu,</strong>lo que me interesa es que cuando se haga click encima del <strong>NotifyIcon </strong>el formulario vuelva a aparecer.</p>
<pre class="brush: vb">

&#039;Hacer click en el icono significa volver a abrir la aplicacion

Private Sub NotifyIcon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NotifyIcon.Click

&#039;Primero lo maximizamos

Me.WindowState = FormWindowState.Maximized

&#039;Refrescamos los controles del formulario, sólo por nitidez.

Me.Refresh()

&#039;Lo volvemos a hacer visible

Me.Visible = True

Me.BringToFront()

End Sub
</pre>
<p style="text-align: justify;">Llegados a este punto me encontré con un problema, si tenía mas ventanas abiertas el formulario aparecía <strong>detrás </strong>de todas ellas. Teniendo en cuenta que es un aplicación que me interesa que esté siempre <strong>delante </strong>del todo utilizé la propiedad <a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.form.topmost.aspx" target="_blank">TopMost</a> del formulario.</p>


<p>Posts Relacionados:<ol><li><a href='http://www.lavilladigital.com/2009/05/05/a-vueltas-con-net-modificar-connection-strings-en-runtime/' rel='bookmark' title='Permanent Link: A vueltas con .NET: Modificar Connection Strings en Runtime'>A vueltas con .NET: Modificar Connection Strings en Runtime</a> <small>Esto del .NET me parece alucinante, la de cosas que...</small></li>
<li><a href='http://www.lavilladigital.com/2009/05/22/a-vueltas-con-net-combobox-multi-columna/' rel='bookmark' title='Permanent Link: A vueltas con .NET: ComboBox Multi-Columna'>A vueltas con .NET: ComboBox Multi-Columna</a> <small>Aunque parezca mentira Visual Basic 2008 no incorpora por defecto...</small></li>
<li><a href='http://www.lavilladigital.com/2009/10/02/%c2%bfpuede-javascript-enviar-un-formulario-por-mail/' rel='bookmark' title='Permanent Link: ¿Puede Javascript enviar un formulario por mail?'>¿Puede Javascript enviar un formulario por mail?</a> <small>¿Puede Javascript enviar un formulario por mail? La respuesta es...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.lavilladigital.com/2009/04/24/a-vueltas-con-net-minimizar-formulario-en-la-barra-de-tareas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

