[英]Using DataGridView in Visual Studio C#
我有一个字符串,其中包含:“# of rows, # of columns, Row'X'Col'X'=Serial#, ...
如何创建一个定义了行数和列数的 DataGrid 表,然后将序列号放入网格中。
例子:
2,1,R1C1=111,R2C1=112,
2,2,R1C1=211,R1C2=212,R2C1=213,R2C2=214,
谢谢
下面是执行您要求的代码; 但是我必须指出这种方法的一些问题。 首先,从前两个元素获取总行数和列数以创建表是有风险的。 如果该数据错误,则此代码很可能会崩溃或可能会遗漏数据。 例如,如果输入是: 2,2,RXCX=.., RXCX=.., RXCX=.., RXCX=..,RXCX=, RXCX=... 该行将只获得前 4 个值。
更糟糕的是……这会崩溃……如果输入是 2,2,RXCX=.., RXCX=.. 那么当你尝试访问 splitArray 中的第四个元素时它会崩溃,因为没有第四个元素。 无论哪种方式都不好。
我的观点是为了安全……在创建网格之前查看实际存在多少数据将是一种更好的方法。 您可以使用 StringArray.Length 减去前两个元素获得多少项。 这些元素将定义维度并允许您检查它们的有效性。 这将确保您的循环不会因为提供的数据错误而越界。 当您可以从数据本身获取该信息时,提供维度值似乎是多余且容易出错的。
我仍然不能 100% 确定您想在这里完成什么。 它看起来像是某种形式的搜索。 这就是我所描绘的……查看您(之前的)屏幕截图,在我看来,在您输入序列号文本框并单击“搜索 Txt 文件”按钮后,它将搜索来自输入字符串的数据,即“PLX51...”,然后让网格显示与序列号文本框中的内容匹配(或类似)的“过滤”结果。 如果这是真的,我将忽略 RXCX 值并将数据放在单个列中。 然后为文本框连接一个 OnKeyPress 事件,以在用户在 Serial # 文本框中键入内容时过滤网格。 否则,我不知道为什么您需要以所描述的方式创建数据。 仅仅因为输入有不必要的数据……并不意味着你必须使用它。 只是一个想法。
string inputString = "2,2,R1C1=211,R1C2=212,R2C1=213,R2C2=214";
string[] splitArray = inputString.Split(',');
int totalRows = int.Parse(splitArray[0]);
int totalCols = int.Parse(splitArray[1]);
int itemIndex = 2;
// add the columns
for (int i = 0; i < totalCols; i++)
{
dataGridView1.Columns.Add("Col", "Col");
}
// add the rows
dataGridView1.Rows.Add(totalRows);
for (int i = 0; i < totalRows; i++)
{
for (int j = 0; j < totalCols; j++)
{
dataGridView1.Rows[i].Cells[j].Value = splitArray[itemIndex];
itemIndex++;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.