我有一个包含count
的类的几个实例。该列表会定期更新。
count
理想情况下,我想将其中的几个列表放在像DataTable这样的内容中,然后执行:
BindingList
然后是:
public class myclass
{
public BindingList<double> values;
public string name;
//....code
public void UpdateVaues()
{
//Get somevalue
values.Add(somevalue);
}
}
并将所有内容更新。
目前我只是不断重新绑定每个列表一次:
chart1.DataSource = datatable;
我无法相信这是最好的方式。有什么想法吗?
答案 0 :(得分:0)
如果您正在寻找具有多个绑定的一个源,则可以将DataSet与DataTables和ObservableCollection一起使用。
public class myclass
{
public DataSet dataSet = new DataSet();
public DataTable dt1;
public DataTable dt2;
public ObservableCollection<double> values1;
public ObservableCollection<double> values2;
public myclass() {
values1.CollectionChanged += values1Changed;
}
public void CreateTables()
{
// Create the DataSet
// Create the Data Tables
dt1 = new DataTable();
dt2 = new DataTable();
dataSet.Tables.Add(dt1);
dataSet.Tables.Add(dt1);
chart1.DataSource = dataSet;
}
private void values1Changed(object sender, NotifyCollectionChangedEventArgs args)
{
//Get somevalue (what changed)
dt1.Rows.Add(somevalue);
chart1.DataBind();
}
}
修改:基于BindingSource
多个BindingList
public BindingSource bindingSource { get; set; } = new BindingSource();
public BindingList<BindingList<double>> bindingList { get; set; } = new BindingList<BindingList<double>>();
public BindingList<double> values1 { get; set; } = new BindingList<double>();
public BindingList<double> values2 { get; set; } = new BindingList<double>();
public Form1()
{
InitializeComponent();
bindingList.Add(values1);
bindingList.Add(values2);
bindingSource.DataSource = bindingList;
chart1.DataSource = bindingSource;
}
免责声明:我还没有对此进行全面测试,但您可以看看它是否有效。您还需要在图表上设置DataMembers。