将蚊帐插入dataGridView(C#)

问题描述 投票:1回答:1

您好,我有一个应用程序,它通过Mosquitto Broker将带有值的消息从一个传感器发送到C#中的另一个应用程序。对于每个主题,我都有3个主题“ topicTemperature,topicHumidity和topicBatery”,消息是带有“ sensorID SensorValue Date”的字符串。我有一个dataGridView,其中包含以下列“ ID,温度,湿度,电池和日期”。消息示例:

"2 22.3 04/12/2019"  //TopicTemperature
"2 47.9 04/12/2019"  //TopicHumidity
"2 99 04/12/2019"  //TopicBatery

我有此代码:

    string[] data;
    if (String.Equals(e.Topic, "topicTemperature")){
        data = Encoding.UTF8.GetString(e.Message).Split(null);
        dataGridView1.Rows.Add(data[0], data[1]);
    }

   if (String.Equals(e.Topic, "topicHumidity")){
       data = Encoding.UTF8.GetString(e.Message).Split(null);
       dataGridView1.Rows.Add(data[1]);
   }

   if (String.Equals(e.Topic, "topicBatery")){
      data = Encoding.UTF8.GetString(e.Message).Split(null);
      dataGridView1.Rows.Add(data[1], data[2]);
   }

这是输出:

enter image description here

我想要此输出:

enter image description here

我需要进行哪些更改才能使其正常工作?

编辑:使用Jacobs代码输出enter image description here

c# mosquitto messagebroker
1个回答
1
投票

我认为最好的选择是先创建行,然后添加值。这样,您可以控制每条数据插入到哪一列。

编辑:下面的代码给了我下面图片的输出。我必须使用您给我的输入,因为我没有传感器,但这应该是您需要的相同概念。

        int rowNum = dataGridView1.Rows.Add();

        string temp = "2 22.3 04/12/2019";
        string humid = "2 47.9 04/12/2019";
        string batery = "2 99 04/12/2019";

        DataGridViewRow row = dataGridView1.Rows[rowNum];

        string[] data;
        if (String.Equals(temp,temp))
        {
            data = temp.Split(null);
            row.Cells["SensorID"].Value = data[0];
            row.Cells["Temperature"].Value = data[1];
        }

        if (String.Equals(humid, humid))
        {
            data = humid.Split(null);
            row.Cells["Humidity"].Value = data[1];
        }

        if (String.Equals(batery, batery))
        {
            data = batery.Split(null);
            row.Cells["Batery"].Value = data[1];
            row.Cells["Date"].Value = data[2];
        }

您将需要循环创建行,但这应该可以给您一个思路。

Output

© www.soinside.com 2019 - 2024. All rights reserved.