Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Проблема с привязкой коллекции к TextBox в VS2010


Автор: miklash90 28.10.2010, 11:51
Почему-то в списке listbox после его привязки к коллекции не отображаются элементы самой коллекции.

http://ipicture.ru/Gallery/Viewfull/1754348.html

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace binding
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
    public class Listok
    {
            public List<string> listik { get; set; }
            public Listok()
            {
                listik = new List<string>();
                listik.Add("Таня");
                listik.Add("Саша");
                listik.Add("Коля");
            }
    }
}


В чем может быть дело?

Автор: CYBERDREAM 28.10.2010, 11:57
так а разве текстбокс для этого? тут по идее надо привязать текстбокс еще к элементу этой коллекции.
для твоего случая по идее лисбокс нужен или нечтоподобное

Автор: miklash90 28.10.2010, 11:59
Сорри, опечатка - listBox

Автор: CYBERDREAM 28.10.2010, 12:50
Код

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
            Stock = new Listok();
            bindingSource1.DataSource = Stock.listik;
        }

        public Listok Stock { get; set; }
    }

    public class Listok
    {
        public List<string> listik { get; set; }
        public Listok()
        {
            listik = new List<string>();
            listik.Add("Таня");
            listik.Add("Саша");
            listik.Add("Коля");
        }
    }

Автор: miklash90 28.10.2010, 13:25
Спасибо огромное, CYBERDREAM. Все работает. Я так понимаю, на базе существующего класса создается объект, коллекция которого привязывается уже к ListBox.

Код

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Stock = new Listok();
            lstDemo.DataSource = Stock.listik;           
        }

        public Listok Stock;
    }
    public class Listok
    {
            public List<string> listik { get; set; }
            public Listok()
            {
                listik = new List<string>();
                listik.Add("Таня");
                listik.Add("Саша");
                listik.Add("Коля");
            }
    }


Но не понимаю тогда роль среды в данном случае, т к в изначально в окне свойств listBox свойство DataSource можно смело все убирать и ставить "(нет)". Т е по логике должен же быть способ привязки средствами среды, зачем-то ведь там есть это DataSource. Спрашиваю уже просто из-за любопытства и желания понять смысл этого.

Автор: CYBERDREAM 28.10.2010, 13:43
в данном случае конечно лучше через датасурс, смысла никакаого нет
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.bindingsource.aspx 
Цитата

Компонент BindingSource используется для многих задач.Во-первых, он упрощает привязку элементов управления на форме к данным, предоставляя средства управления денежными единицами, передавая уведомления об изменениях и выполняя другие функции связи между элементами управления Windows Forms и источниками данных.Это достигается путем присоединения компонента BindingSource к источнику данных с помощью свойства DataSource.В сложных скриптах привязки можно дополнительно указать в свойстве DataMember определенный столбец или список в источнике данных.

Автор: miklash90 28.10.2010, 13:55
Спасибо за справку. Буду разбираться. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)