c# - 拆分字符串,然后写入datagridview行

时间:2017-01-09 03:06:23

标签: c#

我有一个读取字符串的serialport,例如:“11,22,33,44”,但是分隔符的数量不同等:“11,22,33,44,55,66”

我想拆分字符串然后将分隔的字符串写入datagridview,我试过了:

string[] array = _text.Split(',');
table.Rows.Add(array[0], array[1], array[2], array[3]);
datagridview1.DataSource = table;

但是,这里的问题是数组可能会有不同的数量。 有没有办法做到这一点?

感谢您的帮助

4 个答案:

答案 0 :(得分:2)

您不必将每个项目作为参数添加到AddAdd方法将数组作为参数,因此您可以执行以下操作:

string[] array = _text.Split(',');
table.Rows.Add(array);
datagridview1.DataSource = table;

它会添加与数组中项目数相对应的列。

如果要添加具有不同列数的多个行,则需要先检查数组的大小,然后根据需要将列添加到DataTable,否则如果数组中的项数超过DataTable中的列数,您将收到异常。

答案 1 :(得分:1)

您需要做的就是遍历数组并添加每个项目。

string[] array = _text.Split(',');
foreach(var item in array)
{
     table.Rows.Add(item);
}
datagridview1.DataSource = table;

答案 2 :(得分:0)

为此,您可以解析为字符串列表..

_text = "11,22,33,44,55,66";

List<String> str_list = new List<String>();
str_list = _text.Split(',').ToList();
foreach(var item in str_list)
{
    table.Rows.Add(item);
}
datagridview1.DataSource = table;

这对你有用..

答案 3 :(得分:0)

您可以直接将数组作为行添加到DataGridView,请查看以下代码段。

namespace SO
{
    using System;
    using System.Windows.Forms;

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            var input = "11,22,33,44";
            string[] array = input.Split(',');
            dataGridView1.Rows.Add(array);
        }
    }
}

enter image description here