亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# 在圖表中使用 DataGridView 中的數據

C# 在圖表中使用 DataGridView 中的數據

C#
不負相思意 2023-09-16 17:13:59
我有在 DataGridView 中生成數據的代碼,我還想通過單擊同一按鈕將其推送到圖表。過程:文本被放入文本框中myInputBox,然后按下按鈕processButton將文本分割并將其輸出到 DataGridViewmyOutputDGV按鈕具有以下代碼:private void processButton_Click(object sender, EventArgs e)        {            List<string> mySplit = new List<string>(myInputBox.Text.Split(new string[] { "XN" }, StringSplitOptions.None));            DataGridViewTextBoxColumn myOutputGrid = new DataGridViewTextBoxColumn();            myOutputGrid.HeaderText = "Line";            myOutputGrid.Name = "Line";            myOutputDGV.Columns.Add(myOutputGrid);            myOutputGrid = new DataGridViewTextBoxColumn();            myOutputGrid.HeaderText = "Section";            myOutputGrid.Name = "Section";            myOutputDGV.Columns.Add(myOutputGrid);            myOutputGrid = new DataGridViewTextBoxColumn();            myOutputGrid.HeaderText = "Range";            myOutputGrid.Name = "Range";            myOutputDGV.Columns.Add(myOutputGrid);            myOutputGrid = new DataGridViewTextBoxColumn();            myOutputGrid.HeaderText = "Total";            myOutputGrid.Name = "Total";            myOutputDGV.Columns.Add(myOutputGrid);            myOutputGrid = new DataGridViewTextBoxColumn();            foreach (string item in mySplit)            {                myOutputDGV.Rows.Add(item.Trim(),                item.Split(new string[] { "(cost=" }, StringSplitOptions.None).First(),                Regex.Match(item, @"cost=(.+?) rows").Groups[1].Value,                Regex.Match(item, @"cost=(.+?)\.\.").Groups[1].Value,            }        }myChart我想使用 X 軸上的列 [1](線)和 Y 軸上的列 [3](總計)中的值填充圖表。
查看完整描述

2 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

如果您想盡可能保留代碼,可以填寫 aDataTable而不是DataGridView,并將其用作 和中DataSource的。DataGridViewChart


以下代碼大致是您在這種情況下需要執行的操作:聲明DataTable、創建Columns(正確的類型,我只是猜測它們?。?、填充Rows并將其用作DataSource。


好處很明顯:您將擁有強制數據類型,并且可以使用斷點和 VS Data Visualizer 來檢查內容是否符合預期(但在本例中您也會看到它)DataGridView??赡苁菙祿愋徒o您帶來了麻煩chart。


C#(翻譯):


private DataTable dt;


private void MyForm_Load()

{

    LoadDefaults();

}


private void LoadDefaults()

{

    dt.Columns.Add("Line", typeof(Int16));

    dt.Columns.Add("Section", typeof(string));

    dt.Columns.Add("Range", typeof(string));

    dt.Columns.Add("Total", typeof(float));

}


private void processButton_Click(object sender, EventArgs e)

{


foreach (var Item in mySplit) {

    dt.Rows.Add({Item.Trim(), ......});

    }



this.DataGridView1.DataSource = dt;

...

myChart.DataSource = dt;

}

VB.NET


Dim dt As DataTable


Private Sub MyForm_Load()

    Call LoadDefaults()

End Sub


Private Sub LoadDefaults()

    dt.Columns.Add("Line", GetType(Int16))

    dt.Columns.Add("Section", GetType(String))

    dt.Columns.Add("Range", GetType(String))

    dt.Columns.Add("Total", GetType(Single))

End Sub


Private Sub processButton_Click(sender As Object, e As EventArgs) Handles BtnExcel.Click

    For Each Item In mySplit

        dt.Rows.Add({Item.Trim(), Item.Split("(cost=", StringSplitOptions.None).First(), Regex.Match(Item, @"cost=(.+?) rows").Groups[1].Value, Regex.Match(Item, @"cost=(.+?)\.\.").Groups[1].Value})

    Next


    Me.DataGridView1.DataSource = dt

    ...

    myChart.DataSource = dt

End Sub

編輯-調試圖表示例:

https://img1.sycdn.imooc.com//650572120001ce9708380488.jpg

查看完整回答
反對 回復 2023-09-16
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

使用圖表數據綁定的方法有很多種。- 我建議,綁定時,不要綁定到圖表,而是綁定PointsSeries!- 這樣你就可以更好地控制事情,比如選擇Series綁定到哪個。


一個例子..:


var datax = dataGridView1.Rows

? ? ? ? ? ? .Cast<DataGridViewRow>().Select(x => x.Cells[ixName].Value).ToList();

var datay = dataGridView1.Rows

? ? ? ? ? ? .Cast<DataGridViewRow>().Select(x => x.Cells[yName].Value).ToList();


aSeries.Points.DataBindXY(datax, datay);

..其中xName和yName可以是 DGV 的名稱或索引Columns。


但是,正如所建議的,DataTable建議使用 a。無論如何你都需要一個IEnumerable來綁定。


查看完整回答
反對 回復 2023-09-16
  • 2 回答
  • 0 關注
  • 127 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號