none
Problema de índice de combobox con imágenes RRS feed

  • Pregunta

  • Hola a todos, buenos días.

    Estoy batallando con un combo box pero me está dando problemas el índice cuando recorre los procedimientos del mismo.

    Es un combobox normal al cual le quiero insertar una imagen, pero sin recurrir a controles de terceros. He visto este código en google el cual hace lo que necesito.

     Private Sub ComboBox1_DrawItem1(sender As Object, e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
            Try
                e.Graphics.DrawImage(ImageList1.Images(e.Index), e.Bounds.Left, e.Bounds.Top) 'DIBUJA LA IMAGEN
                e.Graphics.DrawString(TEXTOS(e.Index), ComboBox1.Font, Brushes.Yellow, e.Bounds.Left + ImageList1.ImageSize.Width + 10, e.Bounds.Top) 'DIBUJA EL TEXTO
            Catch ex As Exception
            End Try
        End Sub
    
        Private Sub ComboBox1_MeasureItem1(sender As Object, e As System.Windows.Forms.MeasureItemEventArgs) Handles ComboBox1.MeasureItem
            e.ItemHeight = ImageList1.ImageSize.Height + 5 'PARA SEPARAR LOS ELEMENTOS
    
        End Sub
    
        Private Sub RellenoCboDivisas()
            Dim a As Reflection.Assembly = Reflection.Assembly.GetExecutingAssembly
            Dim rm As New ResourceManager(a.GetName.Name & ".Textos", a)
    
            ComboBox1.Items.Clear()
    
            TEXTOS = {"hola", "adios", "kaos", "hola1", "adios1", "kaos1", "hola2", "adios2", "kaos2", "UNAs", "DOSs", "TRESs", "CUATROs", "UNAss", "DOSss", "TRESss", "CUATROss"} 'ARRAY ELEMENTOS EN EL MISMO ORDEN QUE EL IMAGELIST
            ComboBox1.Items.AddRange(TEXTOS)
            ComboBox1.DrawMode = DrawMode.OwnerDrawVariable 'PARA PODER PONER NUESTRAS IMAGENES
            ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList 'PARA QUE EN EL TEXTO APAREZCA LA IMAGEN Y EL TEXTO
            ComboBox1.DropDownHeight = 200 'PARA QUE MUESTRE TODOS LOS ELEMENTOS. DEPENDE DEL NUMERO DE ELEMENTOS Y SU ALTURA
    End sub

    El mismo cuando se inicia la carga desde el form, hace salta la excepción: Ocurrió System.ArgumentOutOfRangeException
      HResult=-2146233086
      Message=InvalidArgument=El valor de '-1' no es válido para 'index'.
    Nombre del parámetro: index
      ParamName=index
      Source=System.Windows.Forms
      StackTrace:
           en System.Windows.Forms.ImageList.ImageCollection.get_Item(Int32 index)
      InnerException:

    De otra parte, pregunto si es posible para no tocar nada más de dicho combobox, que a la variable TEXTOS, le pueda pasar una lista que haría a través de lo que ya tenía relleno que era como ejemplo:

    'ComboBox1.Items.Add("Afganistán" & " | " & "Moneda: Afgani afgano")    '001

    'ComboBox1.Items.Add("Albania" & " | " & "Moneda: Lek albanés")          '002

    es decir le pasaría una lista con el país y la moneda.

    Es una de las formas que he encontrado en google poara poder insertar una imagen al lado del texto, pero no acaba de funcionar bien.

    Bueno, un cordial saludo a todos.

    Gemma

           


    domingo, 10 de julio de 2016 7:02

Respuestas