<?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>solo VB.NET - Visual Basic .Net</title>
	<atom:link href="http://www.solovb.net/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.solovb.net</link>
	<description>Visual Basic.NET, VB.NET, Programación, Tutoriales, Ejemplos</description>
	<lastBuildDate>Thu, 03 May 2012 14:51:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Entrada temporal usada para la detecci&#243;n del tema (91ae58a0-509f-44ae-b867-2fec0ccc76f6 &#8211; 3bfe001a-32de-4114-a6b4-4005b770f6d7)</title>
		<link>http://www.solovb.net/index.php/2012/05/03/entrada-temporal-usada-para-la-deteccin-del-tema-91ae58a0-509f-44ae-b867-2fec0ccc76f6-3bfe001a-32de-4114-a6b4-4005b770f6d7/</link>
		<comments>http://www.solovb.net/index.php/2012/05/03/entrada-temporal-usada-para-la-deteccin-del-tema-91ae58a0-509f-44ae-b867-2fec0ccc76f6-3bfe001a-32de-4114-a6b4-4005b770f6d7/#comments</comments>
		<pubDate>Thu, 03 May 2012 14:51:36 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=831</guid>
		<description><![CDATA[Se trata de una entrada temporal que no se eliminó. Elimínala manualmente. (2d3b5d38-d013-4c7f-8bc1-48d697e7b944 &#8211; 3bfe001a-32de-4114-a6b4-4005b770f6d7)]]></description>
			<content:encoded><![CDATA[<p>Se trata de una entrada temporal que no se eliminó. Elimínala manualmente. (2d3b5d38-d013-4c7f-8bc1-48d697e7b944 &#8211; 3bfe001a-32de-4114-a6b4-4005b770f6d7)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2012/05/03/entrada-temporal-usada-para-la-deteccin-del-tema-91ae58a0-509f-44ae-b867-2fec0ccc76f6-3bfe001a-32de-4114-a6b4-4005b770f6d7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Convertir C&#243;digo C# a VB.Net</title>
		<link>http://www.solovb.net/index.php/2012/01/02/convertir-cdigo-c-a-vb-net/</link>
		<comments>http://www.solovb.net/index.php/2012/01/02/convertir-cdigo-c-a-vb-net/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 14:30:00 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Convertir Codigo]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Tradutor de codigo]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=826</guid>
		<description><![CDATA[Cuando quiero buscar algún ejemplo de código para resolver cualquier duda de programación, muchas veces resulta que el código de ejemplo está en CSharp (esta fue una de mis motivaciones al crear este sitio) y depende de los conocimientos de quien busque, muchas veces resulta difícil tener que entender un ejemplo en un lenguaje diferente [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><a href="http://www.solovb.net/htdocs/wp-content/uploads/2012/01/converter01.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="converter01" border="0" alt="converter01" src="http://www.solovb.net/htdocs/wp-content/uploads/2012/01/converter01_thumb.jpg" width="589" height="44" /></a></p>
<p align="justify">Cuando quiero buscar algún ejemplo de código para resolver cualquier duda de programación, muchas veces resulta que el código de ejemplo está en <strong>CSharp</strong> (esta fue una de mis motivaciones al crear este sitio) y depende de los conocimientos de quien busque, muchas veces resulta difícil tener que entender un ejemplo en un lenguaje diferente del que estoy usando para programar.</p>
<p align="justify">Muchas veces he recurrido a servicios de <strong>conversión de código entre diferentes lenguajes</strong> y esto en muchos casos resulta muy útil. Hoy quiero compartir con ustedes dos servicios que realizan esta tarea y lo hacen muy bien: <a href="http://www.developerfusion.com/tools/convert/csharp-to-vb/">http://www.developerfusion.com/tools/convert/csharp-to-vb/</a> y <a href="http://converter.telerik.com/">http://converter.telerik.com/</a>.</p>
<p><a href="http://www.solovb.net/htdocs/wp-content/uploads/2012/01/converter02.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="converter02" border="0" alt="converter02" src="http://www.solovb.net/htdocs/wp-content/uploads/2012/01/converter02_thumb.jpg" width="593" height="267" /></a></p>
<p>Espero que estos recursos les sean de mucha utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2012/01/02/convertir-cdigo-c-a-vb-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2400 iconos gratis para tus programas</title>
		<link>http://www.solovb.net/index.php/2011/08/18/2400-iconos-gratis-para-tus-programas/</link>
		<comments>http://www.solovb.net/index.php/2011/08/18/2400-iconos-gratis-para-tus-programas/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 14:06:59 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Download]]></category>
		<category><![CDATA[gratis]]></category>
		<category><![CDATA[icon]]></category>
		<category><![CDATA[icono]]></category>
		<category><![CDATA[iconos]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=789</guid>
		<description><![CDATA[Gracias a Cristhian Duran, un colaborador con muchas ganas de compartir, hoy les quiero hacer llegar este set de 2400 iconos gratis para que puedan usarlos libremente en todos sus desarrollos. Esto es posible gracias a FatCow. Son 2400 iconos muy bien diseñados. Realmente espero que les resulten muy útiles. Descargate el pack aquí Puedes [...]]]></description>
			<content:encoded><![CDATA[<p>Gracias a Cristhian Duran, un colaborador con muchas ganas de compartir, hoy les quiero hacer llegar este set de <strong>2400 iconos gratis </strong>para que puedan usarlos libremente en todos sus desarrollos. Esto es posible gracias a <a href="http://www.fatcow.com/free-icons">FatCow</a>.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2011/06/2000FreeIcons.jpg"><a href="http://www.solovb.net/wp-content/uploads/2011/08/2400-iconos.jpg"><a href="http://bit.ly/iconosGratis"><img class="aligncenter size-full wp-image-797" title="2400-iconos" src="http://www.solovb.net/wp-content/uploads/2011/08/2400-iconos.jpg" alt="Ingreible pack de 2400 iconos premiun para programadores y diseñadores" width="371" height="181" /></a></a><br />
</a>Son 2400 iconos muy bien diseñados. Realmente espero que les resulten muy útiles.</p>
<p>Descargate el pack <a href="http://bit.ly/iconosGratis">aquí</a></p>
<p>Puedes revisar también <a href="http://www.solovb.net/index.php/2009/05/05/aiiconpack-iconos-de-alta-calidad-para-tus-apllicaciones-windows-o-webs-gratis/">este post</a> que publicamos hace un tiempo con otro paquete de iconos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2011/08/18/2400-iconos-gratis-para-tus-programas/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Encuesta sobre Visual Studio 2010</title>
		<link>http://www.solovb.net/index.php/2011/05/05/encuesta-sobre-visual-studio-2010/</link>
		<comments>http://www.solovb.net/index.php/2011/05/05/encuesta-sobre-visual-studio-2010/#comments</comments>
		<pubDate>Thu, 05 May 2011 18:25:44 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://www.solovb.net/index.php/2011/05/05/encuesta-sobre-visual-studio-2010/</guid>
		<description><![CDATA[Esta es tu oportunidad para dar tu punto de vista sobre el producto Visual Studio 2010. Es muy importante que la comunidad de usuarios pueda opinar para contribuir a mejorar todas estas herramientas con las que trabajados a diario. La encuesta es anónima, y me gustó mucho que esta orientada especialmente para nosotros los latinos [...]]]></description>
			<content:encoded><![CDATA[<p>Esta es tu oportunidad para dar tu punto de vista sobre el producto <strong>Visual Studio 2010</strong>.</p>
<p>Es muy importante que la comunidad de usuarios pueda opinar para contribuir a mejorar todas estas herramientas con las que trabajados a diario. La encuesta es anónima, y me gustó mucho que esta orientada especialmente para nosotros los latinos pues hay varias preguntas puntuales sobre las traducciones, la ayuda y los recursos en nuestro idioma. Te recomiendo que la completes para que entre todos colaboremos a mejorar las herramientas en nuestro idioma.</p>
<p>Dale clic a la imagen para acceder a la encuesta. Gracias!</p>
<p><a href="http://www.surveymonkey.com/s/VS2010IntlSurveyESN" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="encuestaVS2010" border="0" alt="encuestaVS2010" src="http://www.solovb.net/wp-content/uploads/2011/05/encuestaVS2010.jpg" width="568" height="132" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2011/05/05/encuesta-sobre-visual-studio-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TabControl &#8211; Seleccionar Pagina por c&#243;digo</title>
		<link>http://www.solovb.net/index.php/2011/05/02/tabcontrol-seleccionar-pagina-por-cdigo-2/</link>
		<comments>http://www.solovb.net/index.php/2011/05/02/tabcontrol-seleccionar-pagina-por-cdigo-2/#comments</comments>
		<pubDate>Mon, 02 May 2011 19:28:30 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[SelectIndex]]></category>
		<category><![CDATA[TabControl]]></category>
		<category><![CDATA[TabPage]]></category>

		<guid isPermaLink="false">http://www.solovb.net/index.php/2011/05/02/tabcontrol-seleccionar-pagina-por-cdigo-2/</guid>
		<description><![CDATA[Solovb es un sitio que se caracteriza por sus ejemplos simples y sencillos. Hoy un ejemplo del uso de TabControl. En más de una oportunidad tuve la necesidad de seleccionar mediante código que pagina (TabPage) del control debería ser la que se mostrara, la solución es sencilla pero quizas la estes necesitando en este momento [...]]]></description>
			<content:encoded><![CDATA[<p>Solovb es un sitio que se caracteriza por sus ejemplos simples y sencillos. Hoy un ejemplo del uso de TabControl.</p>
<p>En más de una oportunidad tuve la necesidad de seleccionar mediante código que pagina (TabPage) del control debería ser la que se mostrara, la solución es sencilla pero quizas la estes necesitando en este momento y aquí te la dejo.</p>
<p>Primero necesitaremos un formulario windows, un TabControl y algunos botones dispuestos de forma similar a lo que se ve en la siguiente imagen:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2011/05/TabControl001.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="TabControl001" border="0" alt="TabControl001" src="http://www.solovb.net/wp-content/uploads/2011/05/TabControl001_thumb.jpg" width="550" height="380" /></a> </p>
<p>Y ahora en el evento click de cada botón debemos ingresar el siguiente codigo</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">    Private Sub btnTab1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTab1.Click
        TabControl1.SelectedIndex = 0
    End Sub

    Private Sub btnTab2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTab2.Click
        TabControl1.SelectedIndex = 1
    End Sub

    Private Sub btnTab3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTab3.Click
        TabControl1.SelectedIndex = 2
    End Sub

    Private Sub btnTab4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTab4.Click
        TabControl1.SelectedIndex = 3
    End Sub</pre>
<p>Y eso es todo, solo queda ejecutar, probar e implementar donde quieran. Espero que les sirva.</p>
<p>Al ejecutar se verá mas o menos así:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2011/05/TabControl002.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="TabControl002" border="0" alt="TabControl002" src="http://www.solovb.net/wp-content/uploads/2011/05/TabControl002_thumb.jpg" width="498" height="281" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2011/05/02/tabcontrol-seleccionar-pagina-por-cdigo-2/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Trabajando con Fechas</title>
		<link>http://www.solovb.net/index.php/2011/02/07/trabajando-con-fechas/</link>
		<comments>http://www.solovb.net/index.php/2011/02/07/trabajando-con-fechas/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 18:56:59 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Funciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[datetime]]></category>
		<category><![CDATA[Fecha]]></category>
		<category><![CDATA[fechas]]></category>
		<category><![CDATA[month]]></category>
		<category><![CDATA[now]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[year]]></category>

		<guid isPermaLink="false">http://www.solovb.net/index.php/2011/02/07/trabajando-con-fechas/</guid>
		<description><![CDATA[Hoy quiero comentarle algunas cositas referentes al trabajo con fechas, esas cosas que uno dice… “Pero eso todo el mundo lo sabe…”, pero como este sitio no está dedicado a expertos sino a ayudar a quienes se inician en este mundo de la programación en visual basic .net, me parece mas que apropiado hablar sobre [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy quiero comentarle algunas cositas referentes al <strong>trabajo con fechas</strong>, esas cosas que uno dice… “Pero eso todo el mundo lo sabe…”, pero como este sitio no está <strong>dedicado</strong> a <strong>expertos</strong> sino a ayudar a <strong>quienes se inician en este mundo de la programación en</strong> <strong>visual basic .net</strong>, me parece mas que apropiado hablar sobre fechas.</p>
<p>Antes de comenzar acá les dejo algunas definiciones que sería bueno conocer:</p>
<h4>DateSerial</h4>
<p>Devuelve un valor <b>Date</b> que representa un año, mes y día específicos, con la información de la hora establecida en medianoche (00:00:00).</p>
<h4>Datetime.Now</h4>
<p>Obtiene un objeto <strong>DateTime</strong> que se establece en la fecha y hora actual de este equipo, expresada como hora local.</p>
<h4>DateAdd</h4>
<p>Devuelve un valor de tipo <b>Date</b> que contiene un valor de fecha y hora al que se ha agregado un intervalo de tiempo especificado.</p>
<p>Bueno, sin más rodeos pasemos a los ejemplos. En esta oportunidad de trata de un formulario con una serie de botones y cajas de texto que nos van a informar distintas fecha como por ejemplo, el <strong>último día del mes</strong> actual o el <strong>primer día hábil </strong>de un mes, etc. Es muy sencillo y el ejemplo creo que es lo suficientemente claro por lo que no voy a explicarlo. Simplemente presten atención al <strong>código</strong> y podrán encontrar respuesta a muchas de las dudas que se generan al <strong>trabajar con fechas</strong>.</p>
<p>Este es el formulario que usaremos para el ejemplo:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2011/02/conFechas1.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Fechas en vb.net" border="0" alt="Fechas en vb.net" src="http://www.solovb.net/wp-content/uploads/2011/02/conFechas1_thumb.jpg" width="339" height="309" /></a> </p>
<p>y el código es el siguiente:</p>
<div class="notranslate">
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Fecha Actual
        MsgBox(Now.Date, MsgBoxStyle.OkOnly, &quot;Fecha Actual&quot;)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'Fecha y Hora Actual
        MsgBox(Now(), MsgBoxStyle.OkOnly, &quot;Fecha y Hora Actual&quot;)
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'Primer Día del Mes
        MsgBox(DateSerial(Now.Year, Now.Month, 1), MsgBoxStyle.OkOnly, &quot;Primer Día del Mes&quot;)
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        'Ultimo día del Mes
        Dim fecha1 As Date = DateAdd(DateInterval.Month, 1, Now.Date)
        MsgBox(DateAdd(DateInterval.Day, -1, DateSerial(fecha1.Year, fecha1.Month, 1)), MsgBoxStyle.OkOnly, &quot;Ultimo día del Mes&quot;)
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        'Primer Día Hábil
        Dim primerDiaHabil As Date = DateSerial(Now.Year, Now.Month, 1)
        Select Case primerDiaHabil.Date.DayOfWeek
            Case 1 'Domingo
                primerDiaHabil = DateAdd(DateInterval.Day, 1, primerDiaHabil)
            Case 6 'Sabado
                primerDiaHabil = DateAdd(DateInterval.Day, 2, primerDiaHabil)
            Case Else 'De lunes a Viernes
                ' no hace nada
        End Select
        MsgBox(primerDiaHabil, MsgBoxStyle.OkOnly, &quot;Primer Día Hábil&quot;)
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        'Sumar n Dias a Hoy
        MsgBox(DateAdd(DateInterval.Day, CType(TextBox1.Text, Integer), Now.Date), MsgBoxStyle.OkOnly, &quot;Sumar n Dias a Hoy&quot;)
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        'Sumar n Meses a Hoy
        MsgBox(DateAdd(DateInterval.Month, CType(TextBox2.Text, Integer), Now.Date), MsgBoxStyle.OkOnly, &quot;Sumar n Meses a Hoy&quot;)
    End Sub</pre>
</div>
<p>Suerte y espero que les sea de mucha utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2011/02/07/trabajando-con-fechas/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ordenando DataGridView</title>
		<link>http://www.solovb.net/index.php/2010/11/17/ordenando-datagridview/</link>
		<comments>http://www.solovb.net/index.php/2010/11/17/ordenando-datagridview/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 04:02:49 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[ColumnHeaderMouseClick]]></category>
		<category><![CDATA[DataGridView]]></category>
		<category><![CDATA[Ordenar]]></category>
		<category><![CDATA[Sort]]></category>
		<category><![CDATA[SortMode]]></category>

		<guid isPermaLink="false">http://www.solovb.net/index.php/2010/11/17/ordenando-datagridview/</guid>
		<description><![CDATA[Las columnas del datagridview tienen, por defecto, la funcionalidad de ordenar los registros de forma automática simplemente haciendo clic en el encabezado de la columna que contiene el dato por el cual deseamos ordenar los datos. Cada columna del datagridview tiene una propiedad SortMode la cual podemos setear en NoSortable, Automatic o Programmatic. Si nunca [...]]]></description>
			<content:encoded><![CDATA[<p>Las columnas del <strong>datagridview</strong> tienen, por defecto, la funcionalidad de ordenar los registros de forma automática simplemente haciendo clic en el encabezado de la columna que contiene el dato por el cual deseamos ordenar los datos.</p>
<p>Cada columna del <strong>datagridview</strong> tiene una propiedad <strong>SortMode</strong> la cual podemos <strong>setear</strong> en <strong>NoSortable</strong>, <strong>Automatic</strong> o <strong>Programmatic</strong>. Si nunca cambiamos esta propiedad, estará en Automatic.</p>
<p>El orden funciona de maravilla salvo que queramos ordenar por una columna numérica. Los datos numéricos se ordenan como texto por lo que ese orden no será correcto. A continuación mostraré un ejemplo para que se pueda comprender mejor.</p>
<p>Para el ejemplo necesitamos un formulario y un control datagridview. Agregaremos tres columnas llamadas Nombre, Grupo y Puntuación. Debería verse algo similar a la siguiente imagen:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2010/11/OrdenandoDatagridview001.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="OrdenandoDatagridview001" border="0" alt="OrdenandoDatagridview001" src="http://www.solovb.net/wp-content/uploads/2010/11/OrdenandoDatagridview001_thumb.jpg" width="609" height="400" /></a> </p>
</p>
<p>A continuación agregaremos este código en el Load del formulario para agregar algunos registros:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    DataGridView1.Rows.Add(New String() {&quot;Eliseo&quot;, &quot;Usuario&quot;, 24321})
    DataGridView1.Rows.Add(New String() {&quot;Carlos&quot;, &quot;Soporte&quot;, 122})
    DataGridView1.Rows.Add(New String() {&quot;Jose&quot;, &quot;Usuario&quot;, 423})
    DataGridView1.Rows.Add(New String() {&quot;Sebastian&quot;, &quot;Supervisor&quot;, 1023})
    DataGridView1.Rows.Add(New String() {&quot;Javier&quot;, &quot;Usuario&quot;, 111})
    DataGridView1.Rows.Add(New String() {&quot;Susana&quot;, &quot;Usuario&quot;, 1})
    DataGridView1.Rows.Add(New String() {&quot;Verónica&quot;, &quot;Supervisor&quot;, 24})
    DataGridView1.Rows.Add(New String() {&quot;Gabriela&quot;, &quot;Usuario&quot;, 65})
    DataGridView1.Rows.Add(New String() {&quot;Agustín&quot;, &quot;Usuario&quot;, 719})
    DataGridView1.Rows.Add(New String() {&quot;Camila&quot;, &quot;Supervisor&quot;, 4322})
    DataGridView1.Rows.Add(New String() {&quot;Melisa&quot;, &quot;Usuario&quot;, 654})
    DataGridView1.Rows.Add(New String() {&quot;Liliana&quot;, &quot;Soporte&quot;, 22})
End Sub</pre>
<p>Ahora, para comprender mejor el funcionamiento, deberían ejecutar el programa y probar ordenar por las tres columnas. Acá les muestro como quedará cuando ordenamos por la columna puntuación:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2010/11/OrdenandoDatagridview002.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="OrdenandoDatagridview002" border="0" alt="OrdenandoDatagridview002" src="http://www.solovb.net/wp-content/uploads/2010/11/OrdenandoDatagridview002_thumb.jpg" width="424" height="402" /></a></p>
<p>Bueno, la imagen es muy clara: 1, 1023, 111, 122, 22… no es el orden correcto. Para resolver este problema debemos cambiar el orden de la columna Puntuación de <strong>Automatic</strong> a <strong>Programmatic</strong>.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2010/11/OrdenandoDatagridview003.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="OrdenandoDatagridview003" border="0" alt="OrdenandoDatagridview003" src="http://www.solovb.net/wp-content/uploads/2010/11/OrdenandoDatagridview003_thumb.jpg" width="584" height="411" /></a> </p>
</p>
<p>Bueno, esto es solo el primer paso ahora necesito agregar a nuestro formulario una clase nueva donde programaremos el ordenamiento para las columnas numéricas, la clase es la siguiente: </p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">Public Class OrdenarColumnaNumerica
    Implements System.Collections.IComparer

    Private sortOrderModifier As Integer = 1
    Private Col As Integer = 0

    Public Sub New(ByVal sortOrder As SortOrder, ByVal columna As Integer)
        Col = columna
        If sortOrder = sortOrder.Descending Then
            sortOrderModifier = -1
        ElseIf sortOrder = sortOrder.Ascending Then
            sortOrderModifier = 1
        End If
    End Sub

    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
        Implements System.Collections.IComparer.Compare

        Dim DataGridViewRow1 As DataGridViewRow = CType(x, DataGridViewRow)
        Dim DataGridViewRow2 As DataGridViewRow = CType(y, DataGridViewRow)

        Return (Math.Sign(CLng(DataGridViewRow1.Cells(Col).Value) - CLng(DataGridViewRow2.Cells(Col).Value))) * sortOrderModifier
    End Function
End Class</pre>
<p>Una vez que tenemos nuestra clase para manejar el orden de las columnas numéricas, debemos llamarla desde el evento <strong>ColumnHeaderMouseClick</strong> del <strong>datagridview</strong> de la siguiente forma:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">    Private Sub DataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick

        Static Orden As Integer = 1

        If DataGridView1.Rows.Count &gt; 0 Then
            If DataGridView1.Columns(e.ColumnIndex).Name = &quot;Puntuacion&quot; Then
                If Orden = 1 Then
                    DataGridView1.Sort(New OrdenarColumnaNumerica(SortOrder.Ascending, e.ColumnIndex))
                    Orden = 0
                Else
                    DataGridView1.Sort(New OrdenarColumnaNumerica(SortOrder.Descending, e.ColumnIndex))
                    Orden = 1
                End If
            End If
        End If
    End Sub</pre>
<p>Listo! Ahora solo basta ejecutar y probar el programa. Ahora el resultado se verá como en la siguiente imagen correctamente ordenado:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2010/11/OrdenandoDatagridview004.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="OrdenandoDatagridview004" border="0" alt="OrdenandoDatagridview004" src="http://www.solovb.net/wp-content/uploads/2010/11/OrdenandoDatagridview004_thumb.jpg" width="456" height="453" /></a> </p>
<p>Espero que puedas darle una buena utilidad a esta técnica.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2010/11/17/ordenando-datagridview/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Validando un DataGridView</title>
		<link>http://www.solovb.net/index.php/2010/11/15/validando-un-datagridview/</link>
		<comments>http://www.solovb.net/index.php/2010/11/15/validando-un-datagridview/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 15:02:29 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[CellValidating]]></category>
		<category><![CDATA[datagrid]]></category>
		<category><![CDATA[DataGridView]]></category>
		<category><![CDATA[ErrorText]]></category>
		<category><![CDATA[validacion]]></category>

		<guid isPermaLink="false">http://www.solovb.net/index.php/2010/11/15/validando-un-datagridview/</guid>
		<description><![CDATA[Quiero en esta oportunidad mostrarle un simple ejemplo de validación de datos ingresados en un datagridview. Este es un potente control, muy rico, y con muchísimas opciones de configuración. Esta validación la haremos controlando el evento CellValidating del datagridview. Para el ejemplo vamos a necesitar: un formulario y un datagridview. como se ve en la [...]]]></description>
			<content:encoded><![CDATA[<p>Quiero en esta oportunidad mostrarle un simple ejemplo de <strong>validación de datos</strong> ingresados en un <strong>datagridview</strong>. Este es un potente control, muy rico, y con muchísimas opciones de configuración.</p>
<p>Esta validación la haremos controlando el evento <strong>CellValidating</strong> del <strong>datagridview</strong>.</p>
<p>Para el ejemplo vamos a necesitar: un <strong>formulario</strong> y un <strong>datagridview</strong>. como se ve en la siguiente imagen:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2010/11/validardatagridview001.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="validardatagridview001" border="0" alt="validardatagridview001" src="http://www.solovb.net/wp-content/uploads/2010/11/validardatagridview001_thumb.jpg" width="605" height="334" /></a></p>
<p>En el evento load del formulario seteamos la propiedad <strong>Dock</strong> para que el control ocupe todo el formulario y creamos las columnas para el ingreso de los datos.</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">DataGridView1.Dock = DockStyle.Fill

DataGridView1.Columns.Add(&quot;Nombre&quot;, &quot;Nombre&quot;)
DataGridView1.Columns.Add(&quot;Apellido&quot;, &quot;Apellido&quot;)
DataGridView1.Columns.Add(&quot;Cargo&quot;, &quot;Cargo&quot;)
DataGridView1.Columns.Add(&quot;Categoria&quot;, &quot;Categoría&quot;)
DataGridView1.Columns.Add(&quot;Sueldo&quot;, &quot;Sueldo&quot;)</pre>
<p>Ahora veamos la validación.</p>
<p>El evento que manejamos se llama CellValidating y con un select case vamos a validar los datos dependiendo de que columna es la que se está editando. Esto lo sabemos porque consultamos:<br />
  <br />DataGridView1.Columns(e.ColumnIndex).Name</p>
<p>Cuando se ingresa un dato no válido debemos completar la propiedad ErrorTex del row que estamos editando con un mensaje de error, el cual aparecerá a la izquierda y lo leemos al colocar el puntero del mouse sobre el icono rojo que aparece.</p>
<p>veamos el codigo:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">Private Sub DataGridView1_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating

        Select Case DataGridView1.Columns(e.ColumnIndex).Name
            'El nombre quiero que sea obligatorio, por eso
            'no lo dejo salir de la celda hasta que lo ingrese
            Case &quot;Nombre&quot;
                If String.IsNullOrEmpty(e.FormattedValue.ToString()) Then
                    DataGridView1.Rows(e.RowIndex).ErrorText = _
                        &quot;El Nombre no puede estar vacío&quot;
                    e.Cancel = True
                End If

            Case &quot;Apellido&quot; 'lo mismo pasa con el apellido, es obligatorio
                If String.IsNullOrEmpty(e.FormattedValue.ToString()) Then
                    DataGridView1.Rows(e.RowIndex).ErrorText = _
                        &quot;El Apellido no puede estar vacío&quot;
                    e.Cancel = True
                End If
            Case &quot;Cargo&quot;
                'En el caso del cargo, tengo cuatro opciones o vacío
                'Si no concueda con ninguna no puede salir
                If e.FormattedValue.ToString() &lt;&gt; &quot;Vendedor&quot; And _
                e.FormattedValue.ToString() &lt;&gt; &quot;Encargado&quot; And _
                e.FormattedValue.ToString() &lt;&gt; &quot;Supervisor&quot; And _
                e.FormattedValue.ToString() &lt;&gt; &quot;Gerente&quot; And _
                e.FormattedValue.ToString() &lt;&gt; &quot;&quot; Then
                    DataGridView1.Rows(e.RowIndex).ErrorText = _
                        &quot;El dato no es válido: ingrese Vendedor o Encargado o Supervisor o Gerente&quot;
                    e.Cancel = True
                Else
                    DataGridView1.Rows(e.RowIndex).ErrorText = String.Empty
                End If
            Case &quot;Categoria&quot;
                If e.FormattedValue.ToString() &lt;&gt; &quot;A&quot; And _
                e.FormattedValue.ToString() &lt;&gt; &quot;B&quot; And _
                e.FormattedValue.ToString() &lt;&gt; &quot;C&quot; And _
                e.FormattedValue.ToString() &lt;&gt; &quot;&quot; Then
                    DataGridView1.Rows(e.RowIndex).ErrorText = _
                        &quot;Categorias permitidas: A, B o C&quot;
                    e.Cancel = True
                Else
                    DataGridView1.Rows(e.RowIndex).ErrorText = String.Empty
                End If
            Case &quot;Sueldo&quot;
                'se valida que sea un dato numérico
                If Not IsNumeric(e.FormattedValue.ToString()) And Not String.IsNullOrEmpty(e.FormattedValue.ToString()) Then
                    DataGridView1.Rows(e.RowIndex).ErrorText = _
                        &quot;Debe ingresar un valor numérico&quot;
                    e.Cancel = True
                Else
                    DataGridView1.Rows(e.RowIndex).ErrorText = String.Empty
                End If
        End Select
    End Sub</pre>
<p>Acá les dejo una imagen de como se vería el mensaje de error:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2010/11/validardatagridview002.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="validardatagridview002" border="0" alt="validardatagridview002" src="http://www.solovb.net/wp-content/uploads/2010/11/validardatagridview002_thumb.jpg" width="546" height="147" /></a></p>
<p>Bueno, como siempre, espero que le puedan dar utilidad y ya saben que pueden mejorar mucho este ejemplo, solo hace falta dedicarle tiempo y ganas!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2010/11/15/validando-un-datagridview/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Como clonar un formulario windows</title>
		<link>http://www.solovb.net/index.php/2010/09/21/como-clonar-un-formulario-windows/</link>
		<comments>http://www.solovb.net/index.php/2010/09/21/como-clonar-un-formulario-windows/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 19:02:00 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[clonar formulario]]></category>
		<category><![CDATA[copiar formulario]]></category>
		<category><![CDATA[designer]]></category>

		<guid isPermaLink="false">http://www.solovb.net/index.php/2010/09/21/como-clonar-un-formulario-windows/</guid>
		<description><![CDATA[Muchas veces puede surgir la necesidad de hacer dos o mas formularios iguales o muy parecidos. Lo primero que se nos ocurre es ir al explorador de soluciones, seleccionar un formulario y hacer Control-C y Control-V para crear un nuevo formulario igual al primero, pero… para nuestra sorpresa aparecen unos cuantos errores que nos pueden [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces puede surgir la necesidad de hacer dos o mas formularios iguales o muy parecidos. Lo primero que se nos ocurre es ir al explorador de soluciones, seleccionar un formulario y hacer Control-C y Control-V para crear un nuevo formulario igual al primero, pero… para nuestra sorpresa aparecen unos cuantos errores que nos pueden hacer doler la cabeza. Para ayudar con este tema les presento un breve <strong>tutorial</strong> para saber como <strong>copiar</strong> (a mano) un <strong>formulario windows.</strong></p>
<p>Primero abrimos (para el ejemplo) un nuevo proyecto con un formulario y le agregamos algunos controles y componentes diseñados como más nos guste… aquí un ejemplo:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2010/09/iguales001.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="iguales001" border="0" alt="iguales001" src="http://www.solovb.net/wp-content/uploads/2010/09/iguales001_thumb.jpg" width="495" height="437" /></a></p>
<p>Para el ejemplo es más que suficiente.</p>
<p>Luego vamos al <strong>explorador de soluciones</strong> y abrimos el código del <strong>designer</strong>. En nuestro caso Form1.designer.vb</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2010/09/iguales002.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="iguales002" border="0" alt="iguales002" src="http://www.solovb.net/wp-content/uploads/2010/09/iguales002_thumb.jpg" width="495" height="437" /></a>&#160;&#160; </p>
</p>
<p>En la ventana de código copiamos todo desde la subrutina <strong>InitializeComponent</strong>() hasta el final de la clase.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2010/09/iguales003.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="iguales003" border="0" alt="iguales003" src="http://www.solovb.net/wp-content/uploads/2010/09/iguales003_thumb.jpg" width="495" height="437" /></a></p>
<p> Ahora viene lo bueno… agregamos a nuestro proyecto un nuevo formulario y sin hacer nada mas abrimos el designer del nuevo formulario (en mi caso Form2.designer.vb) y reemplazamos el código, que en la siguiente imagen aparece seleccionado por el que anteriormente habíamos copiado.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2010/09/iguales004.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="iguales004" border="0" alt="iguales004" src="http://www.solovb.net/wp-content/uploads/2010/09/iguales004_thumb.jpg" width="495" height="437" /></a> </p>
<p>Listo! al guardar y ver en vista de diseño tendremos un segundo formulario igualito al primero.</p>
<p>Espero que les sea útil. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2010/09/21/como-clonar-un-formulario-windows/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>IntelliSence: &#8220;Tan &#250;til&#8221;, &#8220;Tan molesto&#8221;</title>
		<link>http://www.solovb.net/index.php/2010/09/17/intellisence-ide-visual-studio/</link>
		<comments>http://www.solovb.net/index.php/2010/09/17/intellisence-ide-visual-studio/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 17:56:53 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Funciones]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IntelliSense]]></category>
		<category><![CDATA[Visual Studio 2008]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://www.solovb.net/index.php/2010/09/17/intellisence-tan-til-tan-molesto/</guid>
		<description><![CDATA[Cuando comencé a utilizar el IDE de Visual Studio allá por la versión 1.0 (año 2002 aprox.) una de las cosas que más me gustó fue el intelliSense. Tanto como para completar los nombres de las variables, funciones, etc., como para sugerir las propiedades y métodos de las clases y de paso examinar todo lo [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando comencé a utilizar el IDE de <strong>Visual Studio</strong> allá por la versión 1.0 (año 2002 aprox.) una de las cosas que más me gustó fue el <strong>intelliSense</strong>. Tanto como para completar los nombres de las variables, funciones, etc., como para sugerir las propiedades y métodos de las clases y de paso examinar todo lo que se podría hacer con ellas.</p>
<p>Pero… a quien no le ha pasado de molestarse cuando todo el tiempo están apareciendo la ventanita y tapa todo el código que uno necesita ver para confirmar, por ejemplo, como era el nombre de esa variable que estoy queriendo usar.</p>
<p>Para resolver esto, presionaba casi enojado la tecla escape para poder ver el resto del código y luego volver a comenzar con las propiedades y el <strong>intelliSence</strong>.</p>
<p>Ahora a que viene todo esto? es que existe una forma de volver transparente este menú contextual (yo no lo sabía hasta hace muy poco) para poder ver lo que esta debajo del <strong>intelliSence</strong>. Esto se logra manteniendo presionada la tecla CTRL (control). Si no lo conocías, pruébalo. Te va a gustar!</p>
<p>Aquí les dejo dos imágenes que ejemplifican muy bien este comportamiento:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2010/09/intelliSense1.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="intelliSense1" border="0" alt="intelliSense1" src="http://www.solovb.net/wp-content/uploads/2010/09/intelliSense1_thumb.jpg" width="525" height="380" /></a><a href="http://www.solovb.net/wp-content/uploads/2010/09/intelliSense2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="intelliSense2" border="0" alt="intelliSense2" src="http://www.solovb.net/wp-content/uploads/2010/09/intelliSense2_thumb.jpg" width="525" height="380" /></a>Si prestan atención, en la segunda imagen se puede apreciar el menú de <strong>intelliSense</strong> muy transparente (casi invisible) así se verá cuando presionen la tecla control.</p>
<p>Esta funcionalidad esta disponible tanto en <a href="http://www.solovb.net/index.php/2009/01/13/visual-studio-2008-express-edition/">Visual Studio 2008</a> como en <a href="http://www.solovb.net/index.php/2010/05/18/descarga-visual-studio-2010-express-gratis/">Visual Studio 2010</a>.&#160; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2010/09/17/intellisence-ide-visual-studio/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

