miércoles, 16 de marzo de 2011

Ampliar funcionalidades a los objetos de .NET

Los que venimos de programar en VB6, teníamos en los objetos ListView y Combobox las propiedades KEY que utilizábamos para guardar la primary key u otro dato que nos ayudaba a identificar el registro en cuestión.

En .NET estas propiedades ya no existen. Para solucionarlo, tenemos que ampliar estos controles para poder disponer de la misma funcionalidad. En esta entrada, voy a explicar cómo hacerlo para estos dos objetos, aunque lo podríamos hacer para todos los objetos que deseemos.

Ampliar funcionalidades para ListView
Nos creamos una clase (en mi caso se llamará TListItem) e introducimos este código:
Imports System.Windows.Forms
Public Class TListItem
Inherits ListViewItem

Private m_Key As Object

Public Property Key() As Object
Get
Return m_Key
End Get
Set(ByVal value As Object)
m_Key = value
End Set
End Property

Public Sub New(Optional ByVal Key As Object = vbNullString)
m_Key = Key
End Sub

End Class
Para cargar el ListView, simplemente haría falta añadir esta nueva clase que nos hemos creado:
loItem = New TListItem
loItem.Key = "nuestraclave"
loItem.Text = "Texto de inicio"
loItem.SubItems.Add("Subitem")
lsvLista.Items.Add(loItem)

Para tratarlo después, sólo hace falta convertir el elemento ListViewItem en el nuevo TListItem para poder acceder a los datos ampliados:
Msgbox CType(lsv.SelectedItems(0), TListItem).Key
Ampliar funcionalidades para ComboBox
Nos creamos una clase (en mi caso se llamará TCombo) e introducimos este código:

Public Class TCombo

Private m_Key As Object
Private m_Valor As String

Public Sub New(ByVal Key As Object, ByVal Valor As String)
m_Key = Key
m_Valor = Valor
End Sub

Public Overrides Function ToString() As String
Return m_Valor
End Function

Public ReadOnly Property Key() As Object
Get
Return m_Key
End Get
End Property

End Class
Para cargar el ComboBox, simplemente haría falta añadir esta nueva clase que nos hemos creado:
cboCombo.Items.Add(New TCombo("nuestraclave", "Texto del combo"))
Para obtener la key del elemento seleccionado del combo.
Msgbox CType(cboCombo.SelectedItem, TCombo).Key
Espero que sea de utilidad.

No hay comentarios:

Publicar un comentario