[AYUDA]llenar un Combobox c#

Iniciado por vinceet, 6 Noviembre 2014, 23:55 PM

0 Miembros y 1 Visitante están viendo este tema.

vinceet

Hola Necesito ayuda de como llenar un combobox apartir de una lista
ejemplo que yo le pregunte el genero de musica que le gusta a la persona que se guarde en una lista y luego salga en el combobox


DarK_FirefoX

Tienes tu TextBox (userInput), un Button (addGenre), el ComboBox (genresComboBox).
No se como tendrás hecho las cosas, porque la verdad no das mucha información. Bueno, imagino que tengas algo como

Código (csharp) [Seleccionar]
List<string> genres;

Luego, en el constructor de tu formulario (o donde debas hacerlo de acuerdo a tu aplicación) debes inicializar la lista:

Código (csharp) [Seleccionar]
genres = new List<string>();

Ahora en el evento onClick del botón debes tener esto:

Código (csharp) [Seleccionar]

private void addGenre_Click(object sender, EventArgs e)
{
    genres.Add(userInput.Text);
    genresComboBox.Items.Add(userInput.Text);
}


Esta quizás no sea la mejor manera de hacerlo, pero es la más sencilla.

Si tienes alguna duda, pregunta de nuevo

Eleкtro

#2
ComboBox.ObjectCollection.AddRange Method
Cita de: http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.objectcollection.addrange%28v=vs.110%29.aspxAdds an array of items to the list of items for a ComboBox.

List(T).ToArray Method
Cita de: http://msdn.microsoft.com/en-us/library/x303t819%28v=vs.110%29.aspxCopies the elements of the List<T> to a new array.

VB.Net
Código (vbnet) [Seleccionar]
Dim list As New List(Of String) From
   {
       "a",
       "b",
       "c"
   }

With ComboBox1
   .DropDownStyle = ComboBoxStyle.DropDownList
   .SuspendLayout()
   .Items.AddRange(list.ToArray)
   .SelectedIndex = 0
   .ResumeLayout()
End With


Csharp
Código (csharp) [Seleccionar]
List<string> list = new List<string> {
"a",
"b",
"c"
};

var _with1 = ComboBox1;
_with1.DropDownStyle = ComboBoxStyle.DropDownList;
_with1.SuspendLayout();
_with1.Items.AddRange(list.ToArray);
_with1.SelectedIndex = 0;
_with1.ResumeLayout();

//=======================================================
//Service provided by Telerik (www.telerik.com)
//=======================================================








vinceet

Esta es mi lista

public static List<Disco> listaDisco = new List<Disco>();

Esta es mi clase
class Disco
    {
        public string titulo;
        public string genero;
        public int año;
        public string autor;
        public double precio;
        public DateTime fecha_registro;
    }


Yo quiero que cuando yo llene el genero buscarlo en la lista todos los generos y que salga en el combobox

Ejemplo este es mi metodo para llenar un datagrid
foreach (Disco aux in Lista.listaDisco)
            {
                if (aux.genero == textBox1.Text)
                {
                   
                    dataGridView1.Rows.Add(aux.titulo, aux.genero, aux.año, aux.autor, aux.precio, aux.fecha_registro);

                }
                else
                {
                    dataGridView1.Rows.Clear();
                }


necesito saber como llenar el combobox asi

Eleкtro

#4
No se si lo he entendido bien...

Instancias una lista de la Class Disco, y lo que quieres hacer es llenar un ComboBox que contenga los distintos "Generos" da los items de la lista de Disco?

Entonces solo tienes que seleccionar la propiedad "genero" de cada item Disco, lo puedes hacer con una query de LINQ o con un For:

VB.Net
Código (vbnet) [Seleccionar]
Imports System.Globalization
Imports System.Threading

Public Class Form1

   Public Shared listaDisco As New List(Of Disco) From
       {
           New Disco With {.titulo = "a", .genero = "Rock"},
           New Disco With {.titulo = "b", .genero = "Pop"},
           New Disco With {.titulo = "c", .genero = "Dubstep"},
           New Disco With {.titulo = "d", .genero = "dubstep"}
       }

   Class Disco
       Public titulo As String
       Public genero As String
       Public año As Integer
       Public autor As String
       Public precio As Double
       Public fecha_registro As DateTime
   End Class

   Private Sub test() Handles MyBase.Shown

       Dim currentCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
       Dim textInfo As TextInfo = currentCulture.TextInfo()

       Dim genres As IEnumerable(Of String) =
           (From disc As Disco In listaDisco
            Select textInfo.ToTitleCase(disc.genero)
            Distinct)

       With ComboBox1
           .Sorted = True
           .SuspendLayout()
           .Items.AddRange(genres.ToArray)
           .SelectedIndex = 0
           .ResumeLayout()
       End With

   End Sub

End Class


CSharp:
Código (csharp) [Seleccionar]

using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Globalization;
using System.Threading;

public class Form1
{

public static List<Disco> listaDisco = new List<Disco> {
new Disco {
titulo = "a",
genero = "Rock"
},
new Disco {
titulo = "b",
genero = "Pop"
},
new Disco {
titulo = "c",
genero = "Dubstep"
},
new Disco {
titulo = "d",
genero = "dubstep"
}

};

public class Disco
{
public string titulo;
public string genero;
public int año;
public string autor;
public double precio;
public DateTime fecha_registro;
}


private void test()
{
CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
TextInfo textInfo = currentCulture.TextInfo();

IEnumerable<string> genres = (from disc in listaDiscotextInfo.ToTitleCase(disc.genero));

var _with1 = ComboBox1;
_with1.Sorted = true;
_with1.SuspendLayout();
_with1.Items.AddRange(genres.ToArray);
_with1.SelectedIndex = 0;
_with1.ResumeLayout();

}
public Form1()
{
Shown += test;
}

}

//=======================================================
//Service provided by Telerik (www.telerik.com)
//Conversion powered by NRefactory.
//=======================================================








vinceet

Muchas Gracias ya encontre la forma gracias a ustedes lo que yo queria hacer esra esto es que soy principiante y no me se explicar bien