我有一个读取字符串的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;
但是,这里的问题是数组可能会有不同的数量。 有没有办法做到这一点?
感谢您的帮助
答案 0 :(得分:2)
您不必将每个项目作为参数添加到Add
。 Add
方法将数组作为参数,因此您可以执行以下操作:
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);
}
}
}