繁体   English   中英

在 Visual Studio C# 中使用 DataGridView

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM