Используйте свойство объекта в качестве DisplayMember в ListBox - PullRequest
1 голос
/ 25 ноября 2010

Я хочу использовать свойство объекта, которое находится внутри объекта.Есть ли способ добиться этого?

WebProxy proxy = new WebProxy("127.0.0.1:80");
ListBox listBox = new ListBox();
listBox.DisplayMember = **"Address.Authority"**; //Note: Address.Authority is an property inside the WebProxy object
listBox.Items.Add(proxy);

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 ноября 2010

Посмотрите на этот вопрос , он по сути задает одно и то же - принцип не меняется между DataGridView и ListBox.Краткий ответ: это возможно, но запутанно.

0 голосов
/ 25 ноября 2010

Как вы относитесь к подклассу WebProxy, например, к WebProxyEx и реализует интерфейс IList, который вроде (ожидает объект, который реализует интерфейсы IList или IListSource) является обязательным условием для использования свойства .DataSource списка.Например:

class WebProxyEx : WebProxy, IList
    {
        private object[] _contents = new object[8];
        private int _count;

        public WebProxy w;

        public WebProxyEx(string address)
        {
            _count = 0;
            w = new WebProxy(address);
            this.Add(w.Address.Authority);
        }
...

И использовать его следующим образом:

ListBox lb;
public Form1()
{
    InitializeComponent();
    WebProxyEx w = new WebProxyEx("127.0.0.1:80");//Use your sub class
    lb = new ListBox();
    this.Controls.Add(lb);

    lb.DataSource = w;//assign the datasource.
    //lb.DisplayMember = "Address.Authority"; //Automatically gets added in the WebProxEx constructor.

}

Дает следующий вывод в списке:

127.0.0,1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...