2015-02-12 3 views
0

Я использую Visual C# в формах Windows, и я очень застрял.C# Windows Forms Data Binding

myTxtBx.DataBindings.Add(new Binding("Text", myBindingSource, "Name", true, DataSourceUpdateMode.OnPropertyChanged, string.Empty)); 

Моя проблема заключается в том, что myTxtBx не получает обновления на всех; Я действительно изменил его на текстовое поле, потому что он не будет работать с ярлыком.

В коде я присваиваю значение myTxtBx, так как это должно быть сделано в этой ситуации.

Мне нужен способ, которым привязки будут принимать значение из текстового поля, несмотря на то, что оно не обновляется вообще.

Я попытался изменить его на DataSourceUpdateMode.OnValidation и заставить его проверить, прежде чем делать материал БД, но DataBindings все еще не принял значение. Я также пробовал использовать WriteValue(), и это тоже не сработало.

Любые предложения были бы оценены!

+0

Какова природа 'myBindingSource'? – DonBoitnott

+0

В нем хранится набор данных. Я знаю, что это работает так, как я использовал этот код в других местах (но с элементами управления обновлениями). Именно там, где текстовое поле не получает обновления, которое вызывает проблему .. привязка предполагает, что она равна нулю –

+0

Буквально «DataSet»? Тогда как ваша привязка узнает, какой из включенных «DataTable» связывает «Имя»? Обычно источником связывания является таблица, а не вся коллекция. – DonBoitnott

ответ

0

проверял вашу проблему на образце. У меня есть Form с двумя TextBox, привязок выглядит следующим образом:

this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bindingSource1, "Text", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); 
this.textBox2.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bindingSource1, "Text", true)); 

Binding источник this.bindingSource1 является тип System.Windows.Forms.BindingSource

Вот код настройки связывания данных источника:

_bindedObject = new DataObject{ Text = "Initialized value"}; 
bindingSource1.DataSource = _bindedObject; 

Ап _bindedObject простой класс со свойством Текст:

[Serializable] 
public class DataObject 
{ 
    public string Text { get; set; } 
} 

textBox1 постоянно обновляет данные при каждом изменении содержащего текст и textBox2 освежает. textBox2 обновляет данные, когда теряет фокус (вызывает проверку) или когда вызывается bindingSource1.EndEdit();.

+0

Это кажется немного длинным, я удивлен, что для этого не существует чего-то такого. Спасибо :) –