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


Автор: AlexPro 11.1.2014, 09:29
Доброго времени, уважаемые!
Столкнулся с проблемой привязки текстового поля к данным. Вот пример:

Код

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        string str = "Проба" ;
        public string Str
        {
            get { return str; }
            set { str = value; }
        }

        public Form1()
        {
            InitializeComponent();
            textBox1.DataBindings.Add("Text", this, "Str", false, DataSourceUpdateMode.OnPropertyChanged);
        }

        public void button1_Click(object sender, EventArgs e)
        {
            Str = "Сработало!!!";
        }
    }
}


Простая форма с текстовым полем и кнопкой. Имеется свойство Str, которое нужно привязать к текстовому полю в качестве источника данных. 

При нажатии на кнопку значение свойства изменяется и хотелось бы увидеть новое значение в поле, но обновления не происходит, - это меня просто убивает! 

Кстати, в обратную сторону привязка работает: при изменении текста в поле, значение свойства Str автоматически изменяется. Что я делаю не так?

Автор: jonie 11.1.2014, 19:32
для того чтобы кто-то из вне узнал об изменении значения поля str, надо об этом уведомить этих самых заинтересованных. Для этих целей в .net используется реализация интерфейса INotifyProperyChanged.
Т.е. вам надо чтобы ваша Form (в вашем случае) его реализовала (там один event собственно  - PropertyChanged), и в set-тере Str-а надо делегат вызвать как-то так:
Код

 public string Str
        {
            get { return str; }
            set
{ 
if(str==value) return;
str = value; 
if(PropertyChanged!=null) PropertyChanged(this, new PropertyChangedEventArgs("Str"));
}
        }


тогда Binding будет работать в двух направлениях.

Автор: AlexPro 11.1.2014, 22:08
jonie, большое спасибо, заработало!  smile 

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