как получить доступ к публичным и закрытым членам List <CustomClass> - PullRequest
1 голос
/ 12 декабря 2011

Вы создаете класс, который будет представлять строку с 2 столбцами:

public class Foo
{
    // obviously you find meaningful names of the 2 properties

    public string Column1 { get; set; } 
    public string Column2 { get; set; }
}

и затем вы сохраняете в List<Foo>:

List<Foo> _items = new List<Foo>();
_items.Add(new Foo { Column1 = "bar", Column2 = "baz" });

Как мне установить DataSource в Listbox для элементов? Если я сделаю

ListBox1.DataSource = _items; 

Я вижу list of Objects в списке вместо текста, который он содержит

Ответы [ 3 ]

4 голосов
/ 12 декабря 2011

Чтобы получить доступ к публичным членам, вам нужно просто выполнить итерации по элементам:

foreach(Foo item in _items)
{
     // use item
}

Поскольку ваша коллекция List<T>, вы также можете получить доступ к элементам по индексу:

string col1 = _items[0].Column1;  // First item in list's column1

Однако вы не можете получить доступ к Foo классам приватным членам.Весь смысл сделать члена в Foo закрытым - запретить доступ извне класса Foo.

1 голос
/ 12 декабря 2011

Переопределить метод ToString () в классе Foo.ListBox использует его для преобразования объектов в строки

Пример:

class A

{

    public int I

    {

        get;

        set;

    }

    public override string ToString()

    {

        return "I=" + I.ToString();

    }

}



public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

    }



    private void Form1_Load(object sender, EventArgs e)

    {

        listBox1.DataSource = new[]

        {

            new A { I = 1},

            new A { I = 2},

        };

    }

}
0 голосов
/ 12 декабря 2011

Вы ищете _items[42] и / или foreach петлю.

...