VB.NET Quick Reference
Os dejo una guía rápida de VB.NET bastante útil. Os la podéis descargar en PDF desde este link.
A vueltas con .NET: ComboBox Multi-Columna
Aunque parezca mentira Visual Basic 2008 no incorpora por defecto un ComboBox capaz de mostrar varias columnas de datos. La única manera de hacerlo es programarlo nosotros mismos o buscar ese control por Internet.
Como ya os imaginais a estas alturas, no vamos a inventar nada que ya esté inventado y funcione perfectamente. Por tanto, vamos a añadir el control capaz de hacer lo que queremos y explicar cómo utilizarlo para mostrar los datos que nos interese. En nuestro caso vamos a utilizar el control Icon ComboBox, creado por Steve McMahon, de la conocida página vbaccelerator
![]()
¿Cómo añadir el control a nuestro proyecto?
Lo primero será descargar el control.
Una vez descargado tenemos que añadir el control al toolbox de nuestro proyecto. Clickando con el botón derecho del ratón encima del toolbox marcamos “Choose Items“, dentro del nuevo menú le damos a Browse y seleccionamos el archivo .dll del control.
Llegados a éste punto tenemos el nuevo control añadido al toolbox y listo para usarse. Lo siguiente será añadir el control al formulario, declararlo, modificar los aspectos visuales y empezar a pasarle valores. Vamos a ello.
Añadir el control al formulario se hace igual que cualquier otro control de los que vienen por defecte en Visual Studio, por tanto arrastramos el control al formulario y empezamos a trabajar con él.
Declaramos el control. Como veis se trata de definir cuántas columnas va a tener el control y el espacio que van a ocupar:
Dim column As IconComboBoxColumn = New IconComboBoxColumn 'Por defecto el control ya trae una columna, sólo cambiamos su tamaño IconComboDepartamento.Columns(0).ColumnWidth = 128 'Segunda columna column.ColumnWidth = 32 IconComboDepartamento.Columns.Add(column) 'Tercera columna column = New IconComboBoxColumn column.ColumnWidth = 96 IconComboDepartamento.Columns.Add(column)
Ya tenemos el control declarado, ahora solo falta poblarlo y mostrarlo. El método para poblar el control consiste en añadirle Items, cada item es una linea del combobox y a cada item le añadiremos tantos subitems como columnas tengamos en el control. Con el ejemplo queda más claro.
Dim ici As IconComboItem = New IconComboItem ici.Text = "Informática" Dim subitem As IconComboSubItem = New IconComboSubItem subitem.Text = "5 trabajadores" ici.SubItems.Add(subitem) subitem = New IconComboSubItem subitem.Text = "Piso superior" ici.SubItems.Add(subitem) IconComboDepartamento.Items.Add(ici)
De éste manera hemos añadido una linea al combobox de 3 columnas.
A vueltas con .NET: Modificar Connection Strings en Runtime
Esto del .NET me parece alucinante, la de cosas que se pueden llegar a hacer de forma rápida y sencilla es enorme. Sin hablar de la cantidad ingente de ejemplos y ayuda que podemos encontrar por Internet. Sin embargo, me he encontrado con un problema.
En una aplicación que estoy haciendo necesito poder leer los datos de diferentes bases de datos en función del dominio en el que se ha autentificado el usuario. Las bases de datos corresponden a diferentes fábricas alrededor del mundo así que necesito poder cambiar el ConnectionString que utilizan los DataSets en tiempo de ejecución. Después de indagar ésto es lo que he conseguido, espero que alguien le ayude.
Lo primero que debemos hacer es declarar los diferentes ConnectionString que podemos utilizar, en nuestro caso lo haremos dentro de My Project -> Settings.

En mi caso tengo 3 Connection Strings, uno de ellos (ConnectionString) es el que utilizan los diferentes DataSets y los otros dos (SpainConnectionString y ChinaConnectionString) son los diferentes valores que puede tomar la primera variable. En la misma pantalla de Settings le damos a ViewCode y saltaremos al código de la clase Settings que nos permite utilizar eventos específicos de esa clase.
Namespace My
'This class allows you to handle specific events on the settings class:
' The SettingChanging event is raised before a setting's value is changed.
' The PropertyChanged event is raised after a setting's value is changed.
' The SettingsLoaded event is raised after the setting values are loaded.
' The SettingsSaving event is raised before the setting values are saved.
Partial Friend NotInheritable Class MySettings
Public WriteOnly Property ChangeConnectionString() As String
Set(ByVal Value As String)
My.Settings("ConnectionString") = Value
End Set
End Property
End Class
End Namespace
Éste es el código que modifica el valor de la variable ConnectionString (también se puede utilizar para cambiar culaquier valor de la clase My Setting), ahora debemos llamar a éste proceso con el valor que nos interese.
En nuestro caso miramos el dominio del usuario y el rango de IP’s del usuario.
Private Sub GetDomain(ByVal HostName As String) 'Buscamos el dominio al que corresponde la ip que tenemos asignada, 'no el dominio al que nos hemos 'logueado desde Windows Dim Direcciones As IPAddress() = Dns.GetHostAddresses(HostName) 'Recorremos todos los posibles dominios y cargamos el portal del dominio correspondiente Select Case Mid(Mid(Direcciones(0).ToString(), 9), 1, InStr(Mid(Direcciones(0).ToString(), 9), ".") - 1) Case My.Settings.SPAIN_IP My.Settings.ChangeConnectionString = My.Settings.SPAINConnectionString Case My.Settings.CHINA_IP My.Settings.ChangeConnectionString = My.Settings.CHINAConnectionString Case Else 'Si llegamos aqui es que no estamos en ningun dominio conocido, por tanto cerramos el portal End Select End Sub
Espero que os sea de ayuda.
A vueltas con .NET: Minimizar formulario en la barra de tareas
Desde hace algún algo más de un mes estoy aprendiendo a programar con en .Net con Visual Basic 2008. Lo estoy haciendo totalmente auto-didacta así que hasta dentro de un tiempo no habrá gran cosa… Se me ha ocurrido colgar todas las dudas que me asalten y encuentre su solución en “El Interné”, por si a alguien le puede servir de ayuda.
El caso de hoy trata de minimizar nuestro formulario y colocarlo en la barra de tareas de Windows (System Tray), no es gran cosa pero es un comienzo, no?
Lo que debemos hacer es añadir un NotifyIcon a nuestro formulario y, si queremos que quede más bonito, añadirle un ContextMenu. La finalidad de éste control es crear un menú cuando hagamos click encima del NotifyIcon. Añadimos el siguiente codigo al evente de cerrar del formulario que queremos ocultar.
'En lugar de cerrar el programa lo vamos esconder y mostrar el icono del IconTray Private Sub frmPortal_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing 'Primero lo minimizamos Me.WindowState = FormWindowState.Minimized Me.ShowInTaskbar = True 'Ahora lo hacemos invisible y cancelamos el evento de cerrar Me.Visible = False e.Cancel = True End Sub
Hasta ahora lo que hemos echo es esconder el formulario pero todavia no veremos ningún icono en la barra de tareas.
En mi caso no voy a usar un ContextMenu,lo que me interesa es que cuando se haga click encima del NotifyIcon el formulario vuelva a aparecer.
'Hacer click en el icono significa volver a abrir la aplicacion Private Sub NotifyIcon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NotifyIcon.Click 'Primero lo maximizamos Me.WindowState = FormWindowState.Maximized 'Refrescamos los controles del formulario, sólo por nitidez. Me.Refresh() 'Lo volvemos a hacer visible Me.Visible = True Me.BringToFront() End Sub
Llegados a este punto me encontré con un problema, si tenía mas ventanas abiertas el formulario aparecía detrás de todas ellas. Teniendo en cuenta que es un aplicación que me interesa que esté siempre delante del todo utilizé la propiedad TopMost del formulario.
Mi Manual de Windows Phone
Ultimos Posts
- Windows Phone Developer Tools 7.1 Beta
- Cambia el tema del emulador de Windows Phone
- Algunos tutoriales de Windows Phone 7 (Parte 3)
- Grabador de voz en Windows Phone
- Cambiar teclado de TextBox en WP7
- Sobre el diseño Metro para programadores de WP7
- Base de datos XML en Windows Phone 7
- Windows Phone 7 Isolated Storage Explorer
- Almacenamiento local de datos en Windows Phone
- Uso del control Popup en WP7
Windows Phone
Nuestras lecturas
- Q&A: Britt Atack, 44, school athletic director
Windows Phone Blog - What’s On Your Desk?
Blankenblog - Guia de estilo para desarrollo de interfaces web
Libre y extremo





