0

每次在相关文本框中显示变量“温度”和“umidita”时,此代码的最后一行应该在 datagridview 中填充一行 3 列。

这些数据来自串行端口,每 x 秒更新一次。

private void SetText(string text)
    {
        string temperatura;
        string umidita;

        if (this.txtOutput.InvokeRequired)
        {
            SetTextCallback d = new SetTextCallback(SetText);
            this.BeginInvoke(d, new object[] { text });
        }

        else
        {

            string f = text;
            char firstChar = f[0];

            if (firstChar == 'T')
            {
                temperatura = f;
                temperatura = f.Replace("T", "");
                textBox1.Text = temperatura;
            }

            else if (firstChar == 'U')
            {
                umidita = f;
                umidita = f.Replace("U", "");
                textBox2.Text = umidita;
            }
            dataGridView1.Rows.Add(new string[] { DateTime.Now.ToString("HH:mm:ss"), textBox1.Text, textBox2.Text });
        }
    }

该代码正在运行,但我一次得到 3 行填充了相同的数据。

在此处输入图像描述

我不熟悉 datagridview,也不明白为什么会出现这种行为。我需要更改什么才能在时间中填写一排时间,“temperatura”和“umidita”?

4

1 回答 1

0

////你可以检查一下你是否已经在这个时候插入了一行

int rowsCount = dataGridView1.Rows.Count;
        string cuurentTime = DateTime.Now.ToString("HH:mm:ss");
        if (cuurentTime != dataGridView1.Rows[rowsCount - 1].Cells[0].Value.ToString())
        {
            dataGridView1.Rows.Add(new string[] { cuurentTime, textBox1.Text, textBox2.Text });
        }
于 2013-06-22T14:56:38.603 回答