對不起,如果主題和我的問題是不匹配,但它是我能做的最好的。總之,我有2個列表框,2個datagridviews,圖表,開始和停止按鈕和秒錶。當我點擊開始按鈕列表框獲取數據(listbox1 =數據來自串行端口和listbox2 =時間(已過去)),並開始實時製圖。當我按停止按鈕列表框中的所有值複製到datagridview作爲分隔列。然後,如果我再次單擊開始按鈕,我想清除所有以前的數據(從列表框和數據網格)開始刷新和新的開始。然後我開始重新獲取新的數據作爲相同的程序(我之前提到),直到我點擊停止按鈕。但是有一個問題;當我點擊停止按鈕時。在新數據(複製到datagirdview)中,我面對datagridview2的第一行是前一行的最後一行。我的意思是在測量的兩倍時間內,它保存了以前數據的最後一行(即使我寫入來清除它)並將其添加爲新測量的第一行。在第三次測量中,它獲得第二行的最後一行一個作爲第一排,每次測量都會這樣。我不知道問題在哪裏?你可以幫我嗎?如何將listbox項添加到datagridview中,因爲它在循環中?
private void btnStart_Click(object sender, EventArgs e)
{
btnOpenFile.Enabled = false;
btnStore.Enabled = false;
btnSend.Enabled = false;
btnStopReceiving.Enabled = true;
btnStart.Enabled = false;
btnTrig.Enabled = true;
watch.Reset();
watch.Start();
zaman.Enabled = true;
timer1.Enabled = true;
listBox1.Items.Clear();
listBox2.Items.Clear();
dataGridView1.Rows.Clear();
dataGridView2.Rows.Clear();
foreach (var series in chrtAcq.Series)
{
series.Points.Clear();
}
}
private void btnStopReceiving_Click(object sender, EventArgs e)
{
watch.Stop();
zaman.Enabled = false;
timer1.Enabled = false;
btnSend.Enabled = true;
btnOpenFile.Enabled = true;
btnStopReceiving.Enabled = false;
btnStart.Enabled = true;
btnStore.Enabled = true;
btnSend.Enabled = false;
foreach (var item in listBox1.Items)
{
dataGridView1.Rows.Add();
dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1].Value = item;
}
foreach (var item2 in listBox2.Items)
{
dataGridView2.Rows.Add();
dataGridView2.Rows[dataGridView2.Rows.Count - 1].Cells[0].Value = item2;
}
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
for (int j = 1; j < dataGridView1.Columns.Count; j++)
{
dataGridView2.Rows[i].Cells[j].Value =
dataGridView1.Rows[i].Cells[j].Value;
}
}
}