elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Eliminar Items en blanco
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Eliminar Items en blanco  (Leído 2,650 veces)
CAEL20

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Eliminar Items en blanco
« en: 24 Marzo 2018, 03:06 am »

Saludos como poder eliminar items en blancos que hay en una lista de un Listbox?? :( VB.NET


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Eliminar Items en blanco
« Respuesta #1 en: 24 Marzo 2018, 22:02 pm »

Buenas.

1. Las preguntas sobre VB.NET van en el foro de programación .NET.

2. A pesar de que la pregunta que has formulado se puede y se debería considerar una pregunta vaga a la que no se te debería responder, puesto que podrías haber buscado en Google para encontrar miles de resultados... pero estuve mirando algunos de esos resultados para indicarte algún enlace, y lo cierto es que no me gustó ninguna de las soluciones (feas y poco óptimas) que se pueden encontrar en Google, así que aquí tienes una solución que he desarrollado basada en extensiones de método y con soporte para tipos genéricos:

Código
  1. Namespace ListBoxExtensions
  2.  
  3.    ''' ----------------------------------------------------------------------------------------------------
  4.    ''' <summary>
  5.    ''' Contains custom extension methods to use with <see cref="ListBox"/> control.
  6.    ''' </summary>
  7.    ''' ----------------------------------------------------------------------------------------------------
  8.    <HideModuleName>
  9.    Public Module ListBoxExtensions
  10.  
  11. #Region " Public Extension Methods "
  12.  
  13.        ''' ----------------------------------------------------------------------------------------------------
  14.        ''' <summary>
  15.        ''' Removes items of the specified type in the source <see cref="ListBox"/> given a condition.
  16.        ''' </summary>
  17.        ''' ----------------------------------------------------------------------------------------------------
  18.        ''' <typeparam name="T">
  19.        ''' The <see cref="Type"/> of items to remove.
  20.        ''' </typeparam>
  21.        '''
  22.        ''' <param name="sender">
  23.        ''' The source <see cref="ListBox"/>.
  24.        ''' </param>
  25.        '''
  26.        ''' <param name="predicate">
  27.        ''' A <see cref="Func(Of T, Boolean)"/> function to test each element for a condition.
  28.        ''' </param>
  29.        ''' ----------------------------------------------------------------------------------------------------
  30.        <DebuggerStepThrough>
  31.        <Extension>
  32.        <EditorBrowsable(EditorBrowsableState.Always)>
  33.        Public Sub RemoveItems(Of T)(ByVal sender As ListBox, ByVal predicate As Func(Of T, Boolean))
  34.            Dim collection As ListBox.ObjectCollection = sender.Items
  35.            Dim indices As New Stack(Of Integer)
  36.  
  37.            For index As Integer = 0 To (collection.Count - 1)
  38.                Dim obj As Object = collection(index)
  39.                If (TypeOf obj Is T) AndAlso (predicate.Invoke(DirectCast(obj, T))) Then
  40.                    indices.Push(index)
  41.                End If
  42.            Next index
  43.  
  44.            sender.BeginUpdate()
  45.            sender.SelectedIndex = -1
  46.            Do While (indices.Any())
  47.                collection.RemoveAt(indices.Pop())
  48.            Loop
  49.            sender.EndUpdate()
  50.  
  51.            collection = Nothing
  52.            indices = Nothing
  53.        End Sub
  54.  
  55.        ''' ----------------------------------------------------------------------------------------------------
  56.        ''' <summary>
  57.        ''' Removes any empty string items (<see cref="String.Empty"/>) in the source <see cref="ListBox"/>.
  58.        ''' </summary>
  59.        ''' ----------------------------------------------------------------------------------------------------
  60.        ''' <param name="sender">
  61.        ''' The source <see cref="ListBox"/>.
  62.        ''' </param>
  63.        ''' ----------------------------------------------------------------------------------------------------
  64.        <DebuggerStepThrough>
  65.        <Extension>
  66.        <EditorBrowsable(EditorBrowsableState.Always)>
  67.        Public Sub RemoveEmptyStrings(ByVal sender As ListBox)
  68.            Dim predicate As Func(Of String, Boolean) =
  69.                Function(str As String) As Boolean
  70.                    Return String.IsNullOrEmpty(str)
  71.                End Function
  72.  
  73.            ListBoxExtensions.RemoveItems(Of String)(sender, predicate)
  74.        End Sub
  75.  
  76.        ''' ----------------------------------------------------------------------------------------------------
  77.        ''' <summary>
  78.        ''' Removes any empty string items (<see cref="String.Empty"/>)
  79.        ''' and also string items that consists only of white-space characters in the source <see cref="ListBox"/>.
  80.        ''' </summary>
  81.        ''' ----------------------------------------------------------------------------------------------------
  82.        ''' <param name="sender">
  83.        ''' The source <see cref="ListBox"/>.
  84.        ''' </param>
  85.        ''' ----------------------------------------------------------------------------------------------------
  86.        <DebuggerStepThrough>
  87.        <Extension>
  88.        <EditorBrowsable(EditorBrowsableState.Always)>
  89.        Public Sub RemoveEmptyOrWhiteSpaceStrings(ByVal sender As ListBox)
  90.            Dim predicate As Func(Of String, Boolean) =
  91.                Function(str As String) As Boolean
  92.                    Return String.IsNullOrWhiteSpace(str)
  93.                End Function
  94.  
  95.            ListBoxExtensions.RemoveItems(Of String)(sender, predicate)
  96.        End Sub
  97.  
  98. #End Region
  99.  
  100.    End Module
  101.  
  102. End Namespace

Modo de empleo para eliminar cadenas de texto vacías (String.Empty):
Código
  1. Me.ListBox1.Items.AddRange({"1", "2", "3", "", String.Empty, "4", "5"})
  2. ListBoxExtensions.RemoveEmptyStrings(Me.ListBox1)

Modo de empleo para eliminar cadenas de texto vacías (String.Empty) y cadenas de texto que solo consistan en espacios en blanco:
Código
  1. Me.ListBox1.Items.AddRange({"1", "2", "3", "", String.Empty, "        ", "4", "5"})
  2. ListBoxExtensions.RemoveEmptyOrWhiteSpaceStrings(Me.ListBox1)

Modo de empleo para eliminar items de un tipo específico que cumplan cierta condición:
Código
  1. Me.ListBox1.Items.AddRange({Color.Red, Color.Green, Color.Blue})
  2.  
  3. Dim predicate As Func(Of Color, Boolean) =
  4.    Function(c As Color) (c = Color.Green)
  5.  
  6. ListBoxExtensions.RemoveItems(Of Color)(Me.ListBox1, predicate)

Por último, recuerda que puedes importar el espacio de nombres para simplificar el uso de las extensiones de método:
Código
  1. Imports Namespace_Principal.ListBoxExtensions
  2.  
  3. ...
  4.  
  5. Dim lb As ListBox = Me.ListBox1
  6.  
  7. lb.RemoveEmptyStrings()
  8. lb.RemoveEmptyOrWhiteSpaceStrings()
  9. lb.RemoveItems(Of Type)(Predicate)

...y que para el método RemoveItems(Of T) siempre puedes declarar una función a nivel de clase y utilizar el operador AddressOf:
Código
  1. Public Class TestClass
  2.  
  3. Private Sub Metodo()
  4.    Dim lb As ListBox = Me.ListBox1
  5.    lb.Items.AddRange({Color.Red, Color.Green, Color.Blue})
  6.  
  7.    ListBoxExtensions.RemoveItems(Of Color)(lb, AddressOf Me.ColorPredicate)
  8. End Sub
  9.  
  10. Private Function ColorPredicate(ByVal c As Color) As Boolean
  11.    Select Case c
  12.  
  13.        Case Color.Green
  14.            Return True
  15.  
  16.        Case Else
  17.            Return False
  18.  
  19.    End Select
  20. End Function
  21.  
  22. End Class


« Última modificación: 25 Marzo 2018, 00:22 am por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Retocar firma + eliminar blanco
Diseño Gráfico
La Muertع Blancα 4 4,739 Último mensaje 29 Mayo 2010, 10:52 am
por La Muertع Blancα
Eliminar lineas en Blanco de un TXT
Programación C/C++
Jupiter34 7 10,117 Último mensaje 29 Octubre 2012, 17:02 pm
por rir3760
Ayuda listview añadir y eliminar items en espesifico
Programación Visual Basic
Brian1511 1 2,169 Último mensaje 7 Julio 2014, 16:52 pm
por plexo
Duda con Script Shell | eliminar espacios en blanco
Scripting
khrizs3422 4 4,523 Último mensaje 5 Julio 2017, 02:13 am
por khrizs3422
MOVIDO: Eliminar Items en blanco
Programación General
Eleкtro 0 2,093 Último mensaje 24 Marzo 2018, 22:02 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines