según lo indicado por the 1st answer, el uso de DisplayMember
obras de si está utilizando asp.net o winfor Sra.
Y para comentar un poco más, también funciona si está utilizando la forma más antigua de la moda Items.add
manera de agregar elementos a un ListBox
.
Sólo por diversión, aquí es una simple demostración de lo que necesita (basta con crear una nueva forma y colocar en ella un cuadro de lista y una etiqueta):
public partial class Form1 : Form
{
class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public override string ToString()
{
return string.Format("{0} {1}", LastName, FirstName);
}
}
public Form1() { InitializeComponent(); }
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
listBox1.DisplayMember = "LastName";
listBox1.DataSource = GetCustomers();
//listBox1.Items.AddRange(GetCustomers().ToArray());
}
private IEnumerable<Customer> GetCustomers()
{
return new List<Customer>()
{
new Customer() { FirstName = "Gustav", LastName = "MAHLER" },
new Customer() { FirstName = "Johann Sebastian", LastName = "BACH" }
};
}
private void lb_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = listBox1.SelectedItem.ToString();
}
}
Disfrute
PS: @2nd postTag
no está disponible para ListBox
: porque acepta una matriz de object
, no un contenedor de elementos específicos como ListView
... pero no necesita ninguno en su caso. Tag
es útil cuando desea transportar datos adicionales junto con un TreeViewItem
específico o ListViewItem
por ejemplo. Por cierto, Tag
se define en el nivel Control
y existe para Button
, Label
, y así sucesivamente ... pero por mi parte, creo que es una mala idea almacenar datos comerciales en ella (sin tipo, UI acoplado). ..) aparte de los casos ListView
y TreeView
para los cuales es bastante conveniente.
Al usar DisplayMember, tiene más sentido configurar ValueMember = "Value" y luego leer SelectedValue –
@Henk: +1, estoy de acuerdo, solo quería señalar que puede obtener acceso al objeto completo, no solo "pre propiedades "asignadas". –
Hola, tu código parece funcionar, gracias. Sin embargo, hay un error menor. No mostrará el elemento Texto en el cuadro de lista. Escribe Namespace.SomeData .... La parte del valor funciona perfectamente, ¡gracias! – CasperT