web-dev-qa-db-fra.com

Création de colonnes dans listView et ajout d'éléments

J'apprends à utiliser le listView dans un windowsForm et j'ai quelques problèmes que j'espère résoudre ici. La première chose est quand je crée les colonnes avec le code ci-dessous:

private void initListView()
    {
        // Add columns
        lvRegAnimals.Columns.Add("Id", -3,HorizontalAlignment.Left);
        lvRegAnimals.Columns.Add("Name", -3, HorizontalAlignment.Left);
        lvRegAnimals.Columns.Add("Age", -3, HorizontalAlignment.Left);
    }

Lorsque j'exécute le programme, le nom des colonnes n'est pas visible, elles sont toutes dans le coin gauche, et je dois les "glisser" pour pouvoir lire le texte. Qu'est-ce que j'ai fait de mal?

Et enfin, je me demande comment ajouter des éléments aux colonnes. Dois-je d'abord créer un objet comme

ListViewItem item1 = new ListViewItem(???);
item1.SubItems.Add("text");

Chaque objet listViewItem est-il une colonne ou une ligne? Comment ajouter des lignes d'informations? Appréciez une aide! Merci!

16
3D-kreativ

Votre premier problème est que vous passez -3 au 2e paramètre de Columns.Add. Il doit être -2 pour qu'il redimensionne automatiquement la colonne. Source: http://msdn.Microsoft.com/en-us/library/system.windows.forms.listview.columns.aspx (regardez les commentaires sur l'exemple de code en bas)

private void initListView()
{
    // Add columns
    lvRegAnimals.Columns.Add("Id", -2,HorizontalAlignment.Left);
    lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
    lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);
}

Vous pouvez également utiliser l'autre surcharge, Add (chaîne). Par exemple:

lvRegAnimals.Columns.Add("Id");
lvRegAnimals.Columns.Add("Name");
lvRegAnimals.Columns.Add("Age");

Référence pour plus de surcharges: http://msdn.Microsoft.com/en-us/library/system.windows.forms.listview.columnheadercollection.aspx

Deuxièmement, pour ajouter des éléments à ListView, vous devez créer des instances de ListViewItem et les ajouter à la collection Items de listView. Vous devrez utiliser le constructeur de chaîne [].

var item1 = new ListViewItem(new[] {"id123", "Tom", "24"});
var item2 = new ListViewItem(new[] {person.Id, person.Name, person.Age});
lvRegAnimals.Items.Add(item1);
lvRegAnimals.Items.Add(item2);

Vous pouvez également stocker des objets dans la propriété Tag de l'élément.

item2.Tag = person;

Et puis vous pouvez l'extraire

var person = item2.Tag as Person;

Faites-moi savoir si vous avez des questions et j'espère que cela vous aidera!

40
Tom

Je n'ai vu personne répondre correctement à cette question. Je le poste donc ici. Pour que les colonnes s'affichent, vous devez spécifier la ligne suivante.

lvRegAnimals.View = View.Details;

Et puis ajoutez vos colonnes après cela.

lvRegAnimals.Columns.Add("Id", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);

J'espère que cela aidera toute autre personne à la recherche de cette réponse à l'avenir.

33
IamBatman

Vous devez définir la propriété du contrôle:

listView1.View = View.Details;
6
Navin Pandit
            listView1.View = View.Details;
        listView1.Columns.Add("Target No.", 83, HorizontalAlignment.Center);
        listView1.Columns.Add("   Range   ", 100, HorizontalAlignment.Center);
        listView1.Columns.Add(" Azimuth ", 100, HorizontalAlignment.Center);     

j'ai aussi eu le même problème .. je fais glisser la colonne vers la gauche .. mais maintenant ok .. alors disons que j'ai 283 * 196 taille de listview ..... Nous avons déclaré dans la colonne largeur -2 pour la largeur automatique .. Pour l'ajustement dans la listview, nous pouvons diviser la largeur de listview en 3 parties (83,100,100) ...

0
U Zay Yar