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
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
List<string> genres;
Luego, en el constructor de tu formulario (o donde debas hacerlo de acuerdo a tu aplicación) debes inicializar la lista:
genres = new List<string>();
Ahora en el evento onClick del botón debes tener esto:
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
ComboBox.ObjectCollection.AddRange Method (http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.objectcollection.addrange%28v=vs.110%29.aspx)
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 (http://msdn.microsoft.com/en-us/library/x303t819%28v=vs.110%29.aspx)
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.NetDim 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
CsharpList<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)
//=======================================================
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
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
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:
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.
//=======================================================
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