Un ListView
no se puede añadir o insertar un objeto directamente como un ListBox
o ComboBox
, sino que se necesita para crear un ListViewItem
y establezca su propiedad Tag
.
La propiedad Tag de Msdn
un objeto que contiene datos sobre el control. El valor predeterminado es nulo.
Cualquier tipo derivado de la clase Object se puede asignar a esta propiedad . Si la propiedad Tag se establece a través del diseñador de Windows Forms , solo se puede asignar texto. Un uso común para la propiedad Tag es almacenar datos estrechamente asociados con el control. Por ejemplo, si tiene un control que muestra información sobre un cliente , puede almacenar un DataSet que contenga el pedido del cliente en la propiedad Tag de ese control para que se pueda acceder a los datos rápidamente.
código Ejemplo:
MyObject myObj = new MyObject();
ListViewItem item = new ListViewItem();
item.Text = myObj.ToString(); // Or whatever display text you need
item.Tag = myObj;
// Setup other things like SubItems, Font, ...
listView.Items.Add(item);
Cuando se necesita para conseguir su objetivo detrás de la ListView
, se puede echar la propiedad Tag
.
private void OnListViewItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) {
MyObject myObj = (MyObject)e.Item.Tag;
int id = myObj.Id;
// Can access other MyObject Members
}
Normalmente es más fácil ajustar la funcionalidad a un método de ayuda.
public static void CreateListViewItem(ListView listView, MyObject obj) {
ListViewItem item = new ListViewItem();
item.Tag = obj;
// Other requirements as needed
listView.Items.Add(item);
}
Y puede hacerlo:
CreateListViewItem(listView, obj);
Un ListView
no admite una propiedad DataSource
como un montón de controles, por lo que si se desea se unen los datos que tendrá que implementar algo un poco más personalizado.
Si no puede hacerlo, no puede hacerlo. Tal vez haya una solución: ¿cuál es tu objetivo aquí? – McGarnagle
Por favor, no escriba sus preguntas con "C#" y cosas por el estilo. Para eso son las etiquetas. –