<?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 &#187; Controles</title>
	<atom:link href="http://www.solovb.net/index.php/category/controles/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>Mon, 02 Jan 2012 14:30:00 +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>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>9</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>4</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>9</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>11</slash:comments>
		</item>
		<item>
		<title>Listview: Item siempre visible</title>
		<link>http://www.solovb.net/index.php/2009/10/15/listview-item-siempre-visible/</link>
		<comments>http://www.solovb.net/index.php/2009/10/15/listview-item-siempre-visible/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 03:46:00 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[add]]></category>
		<category><![CDATA[agregar item]]></category>
		<category><![CDATA[ListView]]></category>
		<category><![CDATA[listviewitems]]></category>
		<category><![CDATA[siempre visible]]></category>

		<guid isPermaLink="false">http://www.solovb.net/index.php/2009/10/15/listview-item-siempre-visible/</guid>
		<description><![CDATA[Siempre que se agregan nuevos elementos ListviewItems a un control listview, y estos son tantos que el control no tiene espacio suficiente para mostrarlos en pantalla, se agrega una barra de desplazamiento vertical. Esto está perfecto, solo que por default no se ven los nuevos items que se van agregando. Hoy quiero mostrarles como solucionar [...]]]></description>
			<content:encoded><![CDATA[<p>Siempre que se agregan nuevos elementos <strong>ListviewItems</strong> a un control <strong>listview</strong>, y estos son tantos que el control no tiene espacio suficiente para mostrarlos en pantalla, se agrega una barra de desplazamiento vertical. Esto está perfecto, solo que por default no se ven los nuevos items que se van agregando.</p>
<p>Hoy quiero mostrarles como solucionar este pequeño inconveniente.</p>
<p>Los controles de <strong>visual basic .net</strong> cono el <strong>listview</strong> nos brindan una cantidad impresionante de <strong>propiedades</strong> para su <strong>configuración</strong>, tantas que muchas veces se desconocen.</p>
<p>Quiero mostrarlo con un <strong>ejemplo muy sencillo</strong>. Para ello necesitaremos un formulario, un control listview y un botón.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/10/listviewItemSiempreVisible001.jpg"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="listviewItemSiempreVisible001" src="http://www.solovb.net/wp-content/uploads/2009/10/listviewItemSiempreVisible001_thumb.jpg" border="0" alt="listviewItemSiempreVisible001" width="437" height="514" /></a></p>
<p>Las propiedades que mas nos interesan son las siguientes:</p>
<ul>
<li><strong>HideSelection</strong>: la establecemos en false para que aunque el control listview no tenga el foco, sigamos viendo cual es el item seleccionado.</li>
<li><strong>ListView1.FocusedItem.EnsureVisible()</strong> para forzar al item seleccionado a estar siempre visible.</li>
</ul>
<p>Bueno, ahora si el código:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [14]">
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ListView1.HideSelection = False
        ListView1.FullRowSelect = True
        ListView1.MultiSelect = False
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Static i As Integer = 0
        i += 1
        ListView1.Items.Add(New ListViewItem("Item número " &#038; i))
        ListView1.Items(ListView1.Items.Count - 1).Selected = True
        ListView1.Items(ListView1.Items.Count - 1).Focused = True

        ListView1.FocusedItem.EnsureVisible()
    End Sub
</pre>
<p>Al ejecutarlo debería verse muy parecido a lo que se muestra en esta imagen:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/10/listviewItemSiempreVisible002.jpg"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="listviewItemSiempreVisible002" src="http://www.solovb.net/wp-content/uploads/2009/10/listviewItemSiempreVisible002_thumb.jpg" border="0" alt="listviewItemSiempreVisible002" width="366" height="446" /></a></p>
<p>Eso es todo, si te sirvió esta información, por favor, deja un comentario.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/10/15/listview-item-siempre-visible/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Krypton Toolkit: Controles Windows Forms Gratis!</title>
		<link>http://www.solovb.net/index.php/2009/09/21/krypton-toolkit-controles-windows-forms-gratis/</link>
		<comments>http://www.solovb.net/index.php/2009/09/21/krypton-toolkit-controles-windows-forms-gratis/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 12:36:33 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Componentes]]></category>
		<category><![CDATA[ComponentFactory]]></category>
		<category><![CDATA[Controles Gratis]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=623</guid>
		<description><![CDATA[ComponentFactory es la empresa que desarrolla los controles Kryton, una suite mediante la cual podremos crear aplicaciones modernas usando el kit de herramientas gratis. ]]></description>
			<content:encoded><![CDATA[<p>Krypton Toolkit<br />
<img src="http://www.solovb.net/wp-content/uploads/2009/09/ComponentFactory001.jpg" alt="ComponentFactory001" title="ComponentFactory001" width="569" height="107" class="aligncenter size-full wp-image-624" /><br />
ComponentFactory es la empresa que desarrolla los controles Kryton, una suite mediante la cual podremos crear aplicaciones modernas usando el kit de herramientas gratis.<br />
El kit se integra a visual studio 2005/2008 y podremos usarlo en nuestros desarrollos con vb.net.<br />
No solo lograremos impresionar a nuestros clientes con el aspecto de la aplicación, sino que obtendremos muy buenos resultados ahorrando mucho tiempo.</p>
<p><img src="http://www.solovb.net/wp-content/uploads/2009/09/ComponentFactory002.jpg" alt="ComponentFactory002" title="ComponentFactory002" width="583" height="371" class="aligncenter size-full wp-image-625" /></p>
<p>Además de Kryton Toolkit (los controles gratis), ComponentFactory cuenta con otros controles de pago que te pueden resultar muy útiles:</p>
<p><img src="http://www.solovb.net/wp-content/uploads/2009/09/ComponentFactory003.jpg" alt="ComponentFactory003" title="ComponentFactory003" width="344" height="314" class="aligncenter size-full wp-image-629" /></p>
<p><img src="http://www.solovb.net/wp-content/uploads/2009/09/ComponentFactory004.jpg" alt="ComponentFactory004" title="ComponentFactory004" width="344" height="312" class="aligncenter size-full wp-image-630" /></p>
<p><img src="http://www.solovb.net/wp-content/uploads/2009/09/ComponentFactory005.jpg" alt="ComponentFactory005" title="ComponentFactory005" width="344" height="307" class="aligncenter size-full wp-image-631" /></p>
<p><img src="http://www.solovb.net/wp-content/uploads/2009/09/ComponentFactory006.jpg" alt="ComponentFactory006" title="ComponentFactory006" width="344" height="308" class="aligncenter size-full wp-image-632" /></p>
<p><img src="http://www.solovb.net/wp-content/uploads/2009/09/ComponentFactory007.jpg" alt="ComponentFactory007" title="ComponentFactory007" width="344" height="308" class="aligncenter size-full wp-image-633" /></p>
<p>Para más información visita: <a href="http://www.componentfactory.com">http://www.componentfactory.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/09/21/krypton-toolkit-controles-windows-forms-gratis/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Cómo usar el control RadioButton</title>
		<link>http://www.solovb.net/index.php/2009/08/31/como-usar-el-control-radiobutton/</link>
		<comments>http://www.solovb.net/index.php/2009/08/31/como-usar-el-control-radiobutton/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 12:12:06 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[radiobutton]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=606</guid>
		<description><![CDATA[Hoy veremos un ejemplo muy simple sobre la utilización del control radiobutton en visual basic .net. coloquemos en un formulario cuatro controles radioButton&#8217;s y un control label. Cada control radioButton representará una estación del año y se debería ver muy similar a la siguiente imagen: Luego de setear la propiedad text de cada control, seleccionamos [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy veremos un ejemplo muy simple sobre la utilización del control radiobutton en visual basic .net.</p>
<p>coloquemos en un formulario cuatro controles radioButton&#8217;s y un control label. Cada control radioButton representará una estación del año y se debería ver muy similar a la siguiente imagen:</p>
<p><img class="alignnone" src="/images/radioButton.jpg" alt="" width="260" height="253" /></p>
<p>Luego de setear la propiedad text de cada control, seleccionamos el primero y cambiamos su propiedad checked a True para que tengamos una opción seleccionada cuanda el programa inicie.</p>
<p>Al hacer doble clic sobre un control radioButton vemos el codigo de la propiedad CheckedChanged la cual se dispara cuando cambia el estado de la propiedad checked.</p>
<p>veamos el código usado para darle funcionalidad a nuestro programa:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        mostrar()
    End Sub

    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
        mostrar()
    End Sub

    Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
        mostrar()
    End Sub

    Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
        mostrar()
    End Sub

    Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged
        mostrar()
    End Sub

    Sub mostrar()
        If RadioButton1.Checked Then
            Label1.Text = "Estamos en Otoño"
        End If
        If RadioButton2.Checked Then
            Label1.Text = "Estamos en Invierno"
        End If
        If RadioButton3.Checked Then
            Label1.Text = "Estamos en Primavera"
        End If
        If RadioButton4.Checked Then
            Label1.Text = "Estamos en Verano"
        End If
    End Sub

End Class</pre>
<p>El resultado final sería similar a este:</p>
<p><img class="alignnone" src="/images/radioButton2.jpg" alt="" width="247" height="240" /></p>
<p>Bueno, realmente es un control muy sencillo de usar, espero que lo puedan incorprar a sus futuros proyectos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/08/31/como-usar-el-control-radiobutton/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Usa los colores de Visual Studio en tu programa</title>
		<link>http://www.solovb.net/index.php/2009/08/02/usa-los-colores-de-visual-studio-en-tu-programa/</link>
		<comments>http://www.solovb.net/index.php/2009/08/02/usa-los-colores-de-visual-studio-en-tu-programa/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 19:41:40 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Definiciones]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Brushes]]></category>
		<category><![CDATA[Colores]]></category>
		<category><![CDATA[DrawItemState]]></category>
		<category><![CDATA[DrawMode]]></category>
		<category><![CDATA[DrawRectangle]]></category>
		<category><![CDATA[ListBox]]></category>
		<category><![CDATA[OwnerDrawFixed]]></category>
		<category><![CDATA[PropertyInfo]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=592</guid>
		<description><![CDATA[El control ColorDialog nos presenta una paleta de colores tradicional, pero lo cierto es que la de visual studio es mucho más linda y nos muestra todos los colores por su nombre como están definidos en las propiedades del objeto System.Drawing.Color.]]></description>
			<content:encoded><![CDATA[<p>Este ejemplo surgio de una consulta en <a href="http://www.solovb.net/index.php/2009/06/05/cuadro-de-dialogo-para-seleccionar-un-color-colordialog/">este artículo</a>.</p>
<p>El control <strong>ColorDialog</strong> nos presenta una paleta de colores tradicional, pero lo cierto es que la de <strong>visual studio</strong> es mucho más linda y nos muestra todos los colores por su nombre como están definidos en las propiedades del objeto <strong>System.Drawing.Color</strong>.</p>
<p>Dado el problema de que no existe un control que nos muestre esta lista de colores vamos a ver como podemos constriur una nosotros mismos.</p>
<p>Para el ejemplo necesitaremos un nuevo proyecto y dos formularios.</p>
<p>En el primer formulario solo tendremos un baton para llamar al formulario 2, tal como se ve en la siguiente figura:</p>
<p><img class="aligncenter size-full wp-image-593" title="coloresNombre001" src="http://www.solovb.net/wp-content/uploads/2009/08/coloresNombre001.jpg" alt="coloresNombre001" width="407" height="338" /></p>
<p>y el código del boton es el siguiente:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Private Sub btnColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnColor.Click
Dim vForm2 As New Form2
vForm2.ShowDialog()
End Sub
</pre>
<p>y en el siguiente formulario pondremos yn control ListBox y dos botoes (aceptar y cancelar) igual que en el siguiente formulario:</p>
<p><img class="aligncenter size-full wp-image-594" title="coloresNombre002" src="http://www.solovb.net/wp-content/uploads/2009/08/coloresNombre002.jpg" alt="coloresNombre002" width="304" height="296" /></p>
<p>En el evento Load del formulario establecemos algunas propiedades del control ListBox y cargamos los nombres de los colores con el siguiente código:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBox1.DrawMode = DrawMode.OwnerDrawFixed
ListBox1.ItemHeight = 20

ListBox1.Items.Clear()
ListBox1.BeginUpdate()
For Each pi As Reflection.PropertyInfo In GetType(Color).GetProperties(Reflection.BindingFlags.Static Or Reflection.BindingFlags.Public)
ListBox1.Items.Add(pi.Name)
Next
ListBox1.EndUpdate()
End Sub
</pre>
<p>En la primer linea del Load &#8220;ListBox1.DrawMode = DrawMode.OwnerDrawFixed&#8221;  establecemos que todos los elementos del control se dibujan manualmente y tienen el mismo alto. Esto, ademças, desencadena un suceso DrawItem justo antes de mostrar cada elemento.</p>
<p>Para programar el evento <strong>DrawItem </strong>del <strong>ListBox</strong>, seleccionamos (en la vista de diseño) el ListBox1, presionamos F4 para ver las propiedades, y en la parte de arriba del cuadro de propiedades seleccionamos el icono del rayo para ver los evento que el control tiene disponibles, buscamos DrawItem y le damos doble clic. La siguiente imagen ejemplifica como hacerlo:</p>
<p><img class="aligncenter size-full wp-image-595" title="coloresNombre003" src="http://www.solovb.net/wp-content/uploads/2009/08/coloresNombre003.jpg" alt="coloresNombre003" width="621" height="337" /></p>
<p>y este es el código del evento <strong>DrawItem</strong></p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
Dim rectangulo As Rectangle = e.Bounds

If (e.State And DrawItemState.Selected) Then
e.Graphics.FillRectangle(SystemBrushes.Highlight, rectangulo)
Else
e.Graphics.FillRectangle(Brushes.White, rectangulo)
End If

Dim nombreColor As String = ListBox1.Items(e.Index)

Dim b As New SolidBrush(Color.FromName(nombreColor))

rectangulo.Inflate(-16, -2)
e.Graphics.FillRectangle(b, New Rectangle(rectangulo.X, rectangulo.Y, 30, rectangulo.Height))

e.Graphics.DrawRectangle(Pens.Black, New Rectangle(rectangulo.X, rectangulo.Y, 30, rectangulo.Height))

If (e.State And DrawItemState.Selected) Then
e.Graphics.DrawString(nombreColor, e.Font, Brushes.White, rectangulo.X + 34, rectangulo.Y + 2)
Else
e.Graphics.DrawString(nombreColor, e.Font, Brushes.Black, rectangulo.X + 34, rectangulo.Y + 2)
End If
End Sub
</pre>
<p>Ahora solo nos falta programar los eventosde los dos botones como se ve en el siguiente código:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
My.Forms.Form1.BackColor = Color.FromName(ListBox1.SelectedItem)
End Sub

Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
Me.Close()
End Sub
</pre>
<p>Bueno, a probar la aplicación&#8230; si todo salió bien, se verá así:</p>
<p><img class="aligncenter size-full wp-image-596" title="coloresNombre004" src="http://www.solovb.net/wp-content/uploads/2009/08/coloresNombre004.jpg" alt="coloresNombre004" width="489" height="436" /></p>
<p>Les dejo algunas definiciones:</p>
<p><strong>Graphics.FillRectangle (Método):</strong> Rellena el interior de un rectángulo especificado por un par de coordenadas, un valor de ancho y un valor de alto.<br />
<strong><br />
Graphics.DrawRectangle (Método):</strong> Dibuja un rectángulo especificado por un par de coordenadas, un valor de ancho y un valor de alto.</p>
<p><strong>Graphics.DrawString (Método):</strong> Dibuja la cadena de texto especificada en la ubicación especificada y con los objetos Brush y Font especificados.</p>
<p>Espero que les sirva y lo puedan usar en sus proyectos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/08/02/usa-los-colores-de-visual-studio-en-tu-programa/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Mover elementos de un listview</title>
		<link>http://www.solovb.net/index.php/2009/05/19/mover-elementos-de-un-listview/</link>
		<comments>http://www.solovb.net/index.php/2009/05/19/mover-elementos-de-un-listview/#comments</comments>
		<pubDate>Tue, 19 May 2009 03:14:39 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[ListView]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=482</guid>
		<description><![CDATA[Este es un sencillo, pero muy poco visto, ejemplo de como podemos hacer en visual basic .net para mover (mediante código) los elementos de un listview.]]></description>
			<content:encoded><![CDATA[<p>Este es un sencillo, pero muy poco visto, ejemplo de como podemos hacer en <strong>visual basic .net</strong> para mover (mediante código) los elementos de un <strong>listview</strong>.</p>
<p>Necesitaremos un <strong>formulario </strong>con un <strong>listview </strong>y dos <strong>botones</strong>:</p>
<p><a class="lightbox" title="noverelementos001" href="http://www.solovb.net/wp-content/uploads/2009/05/noverelementos001.jpg"><img class="aligncenter size-full wp-image-483" title="noverelementos001" src="http://www.solovb.net/wp-content/uploads/2009/05/noverelementos001.jpg" alt="" width="268" height="477" /></a>Ahora, llenaremos el <strong>listview </strong>con algunos datos para el ejemplo y lo haremos en el evento <strong>Load </strong>del mismo:</p>
<pre class="brush: vb; title: ;">
ListView1.Items.Add(&quot;Carlos&quot;)
ListView1.Items.Add(&quot;Marcelo&quot;)
ListView1.Items.Add(&quot;Damian&quot;)
ListView1.Items.Add(&quot;Susana&quot;)
ListView1.Items.Add(&quot;Gerardo&quot;)
ListView1.Items.Add(&quot;Claudia&quot;)
ListView1.Items.Add(&quot;Marta&quot;)
ListView1.Items.Add(&quot;Liliana&quot;)
ListView1.Items.Add(&quot;Eliseo&quot;)
ListView1.Items.Add(&quot;Agustin&quot;)
ListView1.Items.Add(&quot;Camila&quot;)
ListView1.Items.Add(&quot;Lucas&quot;)
ListView1.Items.Add(&quot;Jorge&quot;)
ListView1.Items.Add(&quot;Mabel&quot;)
ListView1.Items.Add(&quot;Natalia&quot;)
ListView1.Items.Add(&quot;Gabriela&quot;)
ListView1.Items.Add(&quot;Paula&quot;)
ListView1.Items.Add(&quot;Matias&quot;)
ListView1.Items.Add(&quot;Martin&quot;)
ListView1.Items.Add(&quot;Juan&quot;)
ListView1.Items.Add(&quot;Maria&quot;)
ListView1.Items.Add(&quot;Abel&quot;)
ListView1.Items.Add(&quot;Pedro&quot;)
</pre>
<p>ListView1.FullRowSelect = True<br />
ListView1.MultiSelect = False</p>
<p>ListView1.HideSelection = False</p>
<p>Notese que también hemos seteado tres <strong>propiedades </strong>muy importantes: <strong>FullRowSelect = True</strong> para que al seleccionar un item se marque toda la fila, <strong>MultiSelect = False</strong> para que solo se pueda seleccionar de a un item y <strong>HideSelection = False</strong> para que siempre veamos que item está seleccionado.</p>
<p>Luego en el evento <strong>click </strong>del botón SUBIR:</p>
<pre class="brush: vb; title: ;">
If ListView1.SelectedIndices.Count &gt; 0 Then
Try
Dim temporal As String
temporal = ListView1.Items(ListView1.FocusedItem.Index - 1).Text

ListView1.Items(ListView1.FocusedItem.Index - 1).Text = ListView1.FocusedItem.Text
ListView1.FocusedItem.Text = temporal

ListView1.Items.Item(ListView1.FocusedItem.Index - 1).Selected = True
ListView1.Items.Item(ListView1.FocusedItem.Index - 1).Focused = True

Catch ex As Exception
Beep()
End Try
Else
MsgBox(&quot;Debe seleccionar un item de la lista.&quot;)
End If
</pre>
<p>y en el evento <strong>click </strong>del botón BAJAR:</p>
<pre class="brush: vb; title: ;">
If ListView1.SelectedIndices.Count &gt; 0 Then
Try
Dim temporal As String
temporal = ListView1.Items(ListView1.FocusedItem.Index + 1).Text&lt;/code&gt;

ListView1.Items(ListView1.FocusedItem.Index + 1).Text = ListView1.FocusedItem.Text
ListView1.FocusedItem.Text = temporal

ListView1.Items.Item(ListView1.FocusedItem.Index + 1).Selected = True
ListView1.Items.Item(ListView1.FocusedItem.Index + 1).Focused = True

Catch ex As Exception
Beep()
End Try
Else
MsgBox(&quot;Debe seleccionar un item de la lista.&quot;)
End If
</pre>
<p>Esto es todo, pueden<strong> ejecutar el programa</strong> y probar como funciona. Les dejo una captura del progrma en funcionamiento:<br />
<a class="lightbox" title="moverelementos002" href="http://www.solovb.net/wp-content/uploads/2009/05/moverelementos002.jpg"><img class="aligncenter size-full wp-image-484" title="moverelementos002" src="http://www.solovb.net/wp-content/uploads/2009/05/moverelementos002.jpg" alt="" width="263" height="471" /></a></p>
<p>Espero que, como a mi, les sea muy útil.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/05/19/mover-elementos-de-un-listview/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Orden de Tabulación (TabIndex)</title>
		<link>http://www.solovb.net/index.php/2009/05/01/orden-de-tabulacion-tabindex/</link>
		<comments>http://www.solovb.net/index.php/2009/05/01/orden-de-tabulacion-tabindex/#comments</comments>
		<pubDate>Fri, 01 May 2009 09:00:30 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[orden de tabulacion]]></category>
		<category><![CDATA[TabIndex]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=390</guid>
		<description><![CDATA[En visual basic .net es muy fácil asignar el órden de tabulación para todos los controles capaces de recibir foco.]]></description>
			<content:encoded><![CDATA[<p>En visual basic .net es muy fácil asignar el órden de tabulación para todos los controles capaces de recibir foco.</p>
<p><img alt="" src="/images/TabIndex001.jpg" class="alignnone" width="453" height="481" /></p>
<p>Cada control tiene una propiedad TabIndex encargada de determinar en que órden el control recibirá el foco si se cambia de un control a otro utilizando la tecla TAB. Esta propiedad se puede ir cambiando una a una, pero así da mucho trabajo. Es mucho más fácil como se muestra en la imagen. </p>
<p>Debes activar el ícono &#8220;Orden de tabulación&#8221; el que se muestra en el círculo rojo y aparecerá un numerico al lado de cada control. Lo que tienes que hacer ahora es dar un clic en cada control en el mismo orden que quieres que lo haga cuando presiones la tecla TAB. Al terminar solo desactiva el botón en la barra de herramientas y listo.</p>
<p>Debería quedar mas o menos así:<br />
<img alt="" src="/images/TabIndex002.jpg" class="alignnone" width="453" height="481" /></p>
<p>Los controles como las etiquetas que no pueden recibir el foco no son importantes y los puedes ignorar.</p>
<p>Espero que les sirva!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/05/01/orden-de-tabulacion-tabindex/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>

