我一直在寻找几个小时的方法来将我的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;
}
答案 0 :(得分:2)
更新的答案:
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 []。
这能满足您的需求吗?