WinForm控件绑定到List <t>问题</t>

时间:2009-11-25 00:51:08

标签: c# winforms data-binding

我有一个用于存储我的数据的列表,我尝试将其项目绑定到网格,列表框,文本框等,但无法使其正常工作。这是我的代码

class Survey
{
   public int Id { get; set; }
   public string Desc{ get; set; }
   public List<string> Choices { get; set; }
}

List<Survey> _surveyList = GetList();
BindingSource _bindingSourceSurveys = new BindingSource { DataSource=_surveyList};
dataGridView1.DataSource = _bindingSourceSurveys;
txtDesc.DataBindings.Add("Text", _bindingSourceSurveys, "Desc",false,DataSourceUpdateMode.OnPropertyChanged,string.Empty);
lstChoices.DataBindings.Add("DataSource" , _bindingSourceSurveys,"Choices" ,false,DataSourceUpdateMode.OnPropertyChanged, string.Empty); 

现在我可以看到textBox上的dataGrid,selectedItem(在dataGrid上)Desc属性值上的项目,也可以从textBox更改Desc属性值。

如果我在我的selectedItem List Choices中添加一个新选项

(_bindingSourceSurveys.Current as Survey).Choices.Add("NewChoice");

注意:我无法添加到ListBox.Items,因为它提供了Exception,因为我对此控件的DataSource进行了绑定。

ListBox不显示新项目,如果我从dataGrid中选择一个不同的项目并转回来,我可以看到新添加的选项。

这是什么问题?这个代码是否正常,这是我第一次使用这个绑定工具。

1 个答案:

答案 0 :(得分:2)

当元素发生变化时,您的数据源不会引发事件。一个简单的解决方法是将数据源从List更改为BindingList。