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
編輯-調試圖表示例:

TA貢獻1712條經驗 獲得超3個贊
使用圖表數據綁定的方法有很多種。- 我建議,綁定時,不要綁定到圖表,而是綁定Points
到Series
!- 這樣你就可以更好地控制事情,比如選擇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來綁定。
- 2 回答
- 0 關注
- 127 瀏覽
添加回答
舉報