Создать IList объектов в классе - заполнить список в форме - PullRequest
1 голос
/ 26 апреля 2011

Нам был приведен пример использования IList, который используется для заполнения списка. Я хотел бы использовать тот же процесс для заполнения списка объектами, но для заполнения ListView.

Код из класса объекта выглядит следующим образом:

public void ListClients(IList list)
{
    list.Clear();
    for (int i = 0; i < MAX_CLIENTS; ++i)
    {
        if (myClients[i] == null)
            continue;
        list.Add(myClients[i].FullName);
    }
}

код в форме, например:

private void ListClientButton_Click(object sender, EventArgs e)
{
    CDB.ListClients(ListClientsBox.Items);
}

Я пробовал множество способов, но думаю, что недостаточно хорошо понимаю концепцию IList. Можно ли заполнить представление списка в режиме просмотра сведений из IList?

1 Ответ

2 голосов
/ 26 апреля 2011

Есть ли в вашем ListView элементе управления какие-либо столбцы? Если этого не произойдет, контент не будет виден. Попробуйте:

private void ListClientButton_Click(object sender, EventArgs e)
{
    ListClientsBox.Columns.Add("Full name");
    CDB.ListClients(ListClientsBox.Items);
}

Edit:

Я провел несколько тестов, код, который вы разместили в комментарии, вроде бы в порядке. Вам может потребоваться только настроить несколько свойств ListView, в зависимости от отображения, к которому вы стремитесь:

// perpare ListView beforehand
this.listView.Columns.Add("First name");
this.listView.Columns.Add("Email");
this.listView.Columns.Add("Country");
this.listView.View = View.Tile;
// if tile height is too small, some data might not be visible
this.listView.TileSize = new Size(180, 50); 

// sample data
var people = new[] 
{
    new { FirstName = "John", Email = "john@domain.com", Country = "USA" },
    new { FirstName = "Betty", Email = "betty72@mail.org", Country = "Canada" },
    new { FirstName = "Steven", Email = "stv@domain.net", Country = "Brazil" },
};

foreach (var person in people)
{
     ListViewItem item = new ListViewItem(person.FirstName);
     item.SubItems.Add(person.Email);
     item.SubItems.Add(person.Country);
     this.listView.Items.Add(item);
}

А вот так выглядит ListView с View.Tile и View.Details: ListView examples

...