簡體   English   中英

c#-將多個列表綁定到多個圖表系列的最佳方法

[英]c# - Best way to bind multiple lists to multiple chart series

我有一個包含BindingList的類的幾個實例。 該列表會定期更新。

public class myclass
{
    public BindingList<double> values;
    public string name;
    //....code

    public void UpdateVaues()
    {
        //Get somevalue
        values.Add(somevalue);
    }
}

理想情況下,我想將這些列表中的幾個放在類似DataTable的地方,然后執行以下操作:

chart1.DataSource = datatable;

然后再:

chart1.DataBind();

並更新所有內容。

目前,我只是不斷地一次重新綁定每個列表:

//Inside main form
chart1.Series["one"].Points.DataBindY(myclass1.values);
chart1.Series["two"].Points.DataBindY(myclass2.values);
//...

我不敢相信這是最好的方法。 有任何想法嗎?

如果要查找具有多個綁定的一個源,則可以將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();
    }
}

編輯:另一個可能的解決方案基於具有多個BindingList BindingSource

    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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM