Tengo un puerto serie que lee una cadena como: "11,22,33,44", sin embargo, el número de separadores difiere, etc.: "11,22,33,44,55,66"

Quiero dividir la cadena y luego escribir las cadenas separadas en una vista de cuadrícula de datos, he intentado:

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

Sin embargo, el problema aquí es que las matrices pueden venir en una cantidad diferente. ¿Hay alguna forma de hacer esto?

Gracias por cualquier ayuda

c#
0
Kevin Lee 9 ene. 2017 a las 06:06

4 respuestas

La mejor respuesta

No tiene que agregar cada elemento como parámetro a Add. El método Add toma una matriz como parámetro, así que solo puedes hacer:

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

Y agregará columnas correspondientes a la cantidad de elementos en su matriz.

Si desea agregar múltiples filas con un número variable de columnas, primero deberá verificar el tamaño de la matriz, luego agregar columnas a DataTable según sea necesario, de lo contrario obtendrá una excepción si el número de elementos en la matriz excede el número de columnas en DataTable.

2
D Stanley 9 ene. 2017 a las 03:59

Para ello, puede analizar en la lista de cadenas.

_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;

Esto funcionará para ti ...

0
Thili77 9 ene. 2017 a las 03:17

Puede agregar directamente la matriz como la fila a DataGridView, verifique el fragmento de código a continuación.

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

0
Abdul Mateen Mohammed 9 ene. 2017 a las 03:23

Todo lo que necesita hacer es iterar sobre la matriz y agregar cada elemento.

string[] array = _text.Split(',');
foreach(var item in array)
{
     table.Rows.Add(item);
}
datagridview1.DataSource = table;
1
Mayank 9 ene. 2017 a las 03:09