将字符数组装入数据表

本文关键字:数据表 装入 数组 字符 | 更新日期: 2023-09-27 18:07:13

我已经搜索了几个小时的方法来加载我的字符数组直接到一个动态表,然后到一个数据网格视图。

尝试了几种方法,但总有一些事情没有按计划进行。

通缉:数组按行写入表中,从一个单元格跳到另一个单元格。

private void btn_okay(object sender, EventArgs e)
{
    //reading the strings from the two text boxes 
    Char[] ArrayUp = rtb_up.Text.ToCharArray();
    Char[] ArrayDown = rtb_down.Text.ToCharArray();
    Char[] ArrayEnd = new Char [ArrayUp.Length * ArrayDown.Length];
    //comparison of the two char arrays and filling the new char array
    Int32 I = 0;
    for (Int32 C = 0; C < ArrayDown.Length; C++)
    {
       for (Int32 D = 0; D < ArrayUp.Length; D++)
        {
            if (ArrayDown[C] == ArrayUp[D])
            {
                ArrayEnd[I] = '+' ;
                I ++;
            }
            else
            {
                ArrayEnd[I] = '-'  ;
                I ++;
            }
        }
    }
    //creation of data table
    DataTable Table = new DataTable();
    for (Int32 E = 0; E < ArrayUp.Length; E++)
        Table.Columns.Add("", typeof(Char));
    for (Int32 R = 0; R < ArrayDown.Length; R++)
        Table.LoadDataRow(ArrayEnd[R], LoadOption.OverwriteChanges()); 
    //OverwriteChanges won't work
    dgv_main.AutoGenerateColumns = true;
    dgv_main.DataSource = Table;
}

将字符数组装入数据表

更新后的答案:

string arrayUp = "ABBAAAABABAAAB"; // Example value for rtb_up.Text
string arrayDown = "ABABAAABAB"; // Example value for rtb_down.Text
DataTable dataTable = new DataTable();
// Add variable number of columns, depending on the length of arrayUp
for (int i = 0; i < arrayUp.Length; i++)
    dataTable.Columns.Add("");
// Iterate through the "rows" first
for (int i = 0; i < arrayDown.Length; i++)
{
    DataRow dataRow = dataTable.NewRow();
    // Then iterate through the "columns"
    for (int j = 0; j < arrayUp.Length; j++)
    {
        if (arrayDown[i] == arrayUp[j])
            dataRow[j] = "+";
        else
            dataRow[j] = "-";
    }
    dataTable.Rows.Add(dataRow);
}
dgv_main.AutoGenerateColumns = true;
dgv_main.DataSource = dataTable;

这会给你一个完全像你发布的截图一样的情节-无论a或B相交的地方,都会有一个加号(+)。在它们不相交的地方,会有一个负号(-)。

需要注意的是,字符串本质上是Char[],因此不需要将TextBox的值强制转换为Char[]。

这样能得到你想要的吗?