C# 将字符数组加载到数据表中

C# 将字符数组加载到数据表中,c#,arrays,char,C#,Arrays,Char,我一直在寻找一种方法,将我的字符数组直接加载到动态表中,然后加载到数据网格视图中 尝试了几种方法,但总有一些方法无法按计划工作 通缉:数组按行写入表中,从一个单元格跳到另一个单元格 private void btn_okay(object sender, EventArgs e) { //reading the strings from the two text boxes Char[] ArrayUp = rtb_up.Text.ToCharArray(); Char

我一直在寻找一种方法,将我的字符数组直接加载到动态表中,然后加载到数据网格视图中

尝试了几种方法,但总有一些方法无法按计划工作

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

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;

}
private void btn_正常(对象发送方,事件参数e)
{
//从两个文本框中读取字符串
Char[]ArrayUp=rtb_up.Text.ToCharArray();
Char[]ArrayDown=rtb_down.Text.ToCharArray();
Char[]ArrayEnd=新字符[ArrayUp.Length*ArrayDown.Length];
//比较两个字符数组并填充新的字符数组
int32i=0;
对于(Int32 C=0;CDataTable=新的DataTable();
对于(Int32 E=0;E
更新的答案:

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;
string arrayUp=“abbaaababaab”;//rtb_up.Text的示例值
字符串arrayDown=“abababab”//rtb_down.Text的示例值
DataTable=新的DataTable();
//根据arrayUp的长度,添加可变的列数
for(int i=0;i
这将为您提供一个与您发布的屏幕截图完全相同的绘图-无论a或B在何处相交,都将有一个加号(+)。如果它们不相交,就会有一个减号(-)

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


这能满足你的需要吗?

这并不能完全解决我的问题。我想将char数组加载到现有表中,或者加载到存储数组填充时创建的表中。行数和列数不是静态的,否则我可能不会太戏剧化。我的示例不要求行数或列数是静态的。行数或列数完全取决于数组的长度。在您的情况下,它将是
rtb_up.Text
rtb_down.Text
的长度。我用特定值填充数组只是为了演示。查看存储在
ArrayUp
ArrayDown
数组中的一些示例值可能会有所帮助,以及您希望在DataGridView中如何查看这些值。我没有说您的示例需要这些值,但到目前为止,我已经看到了很多其他示例。ArrayUp和ArrayDown都不存储在那里,而是ArrayEnd,通过这两个循环填充的数组。在该数组中,只有+或-并且它们应该位于特殊位置。这里有点像这样:应用了您的想法,但它只填充了一行,而不是填充所有数据所需的那么多行。可能是一些简单但还不起作用的东西。总是这样DataTable=新的DataTable();对于(Int32 i=0;i