Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с привязкой TextBox к данным 
:(
    Опции темы
AlexPro
  Дата 11.1.2014, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 4



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

Код

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 автоматически изменяется. Что я делаю не так?
PM MAIL   Вверх
jonie
Дата 11.1.2014, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



для того чтобы кто-то из вне узнал об изменении значения поля 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 будет работать в двух направлениях.

Это сообщение отредактировал(а) jonie - 11.1.2014, 19:33


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
AlexPro
Дата 11.1.2014, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 4



jonie, большое спасибо, заработало!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0718 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.