C# 基于if语句在datagrid视图中使用字符串填充单元格

C# 基于if语句在datagrid视图中使用字符串填充单元格,c#,if-statement,foreach,datagridview,C#,If Statement,Foreach,Datagridview,我有一个datagridview,它在数组中显示值。我希望第5列显示一个基于前几列数据的字符串。正如您所看到的,我有一个foreach循环,但是第5列仍然显示为空白。谢谢你的帮助 try { if (File.Exists("competitorDetailsFile.txt")) //if this file exists { string[] detailsArray = File.ReadLines("competitorDetailsFile.t

我有一个datagridview,它在数组中显示值。我希望第5列显示一个基于前几列数据的字符串。正如您所看到的,我有一个foreach循环,但是第5列仍然显示为空白。谢谢你的帮助

 try
     {
     if (File.Exists("competitorDetailsFile.txt")) //if this file exists
     {
     string[] detailsArray = File.ReadLines("competitorDetailsFile.txt") .ToArray();
   //write data to array
     double time = 0;
     double time1 = 0;


   for (int number = 0; number < detailsArray.Length;number++)
      {
       string[] detailsArray2 = detailsArray[number].Split('~'); 

 //split on tilda

    time1 = Convert.ToDouble(detailsArray2[3]) + 
            Convert.ToDouble(detailsArray2[4]) + 
            Convert.ToDouble(detailsArray2[5]) + 
            Convert.ToDouble(detailsArray2[6]) + 
            Convert.ToDouble(detailsArray2[7]);
    time = time1 / 5;
    int score = Convert.ToInt32(detailsArray2[8]);


     //time is equal to the average of the ski times 

    dataGridView1.Rows.Add(detailsArray2[0], 
    Convert.ToDouble(detailsArray2[1]), 
    Convert.ToInt32(detailsArray2[8]), 
    time);

{
   foreach (DataGridViewRow row in dataGridView1.Rows)
       {
           foreach (DataGridViewCell cell in row.Cells)
           {
             if (time > 100)
           {
             row.Cells[5].Value = "LOW";
           }
             else if (time < 100)
           {
             row.Cells[5].Value = "HIGH";
           }

        }
    }
试试看
{
if(File.Exists(“competitorDetailsFile.txt”)//如果此文件存在
{
字符串[]detailsArray=File.ReadLines(“competitorDetailsFile.txt”).ToArray();
//将数据写入阵列
双倍时间=0;
双时间1=0;
对于(int number=0;number100)
{
行。单元格[5]。Value=“低”;
}
否则如果(时间<100)
{
行。单元格[5]。Value=“高”;
}
}
}

}

我认为您没有添加第五列(因此以后无法引用),而且foreach循环似乎没有必要……试试看

string score = 
   time > 200
      ? "LOWEST"
      : time > 100
         ? "LOW"
         : time > 50
            ? "MEDIUM"
            : "HIGH";

dataGridView1.Rows.Add(detailsArray2[0], Convert.ToDouble(detailsArray2[1]), Convert.ToInt32(detailsArray2[8]), time, score);

你能修改一下你代码的格式吗?现在很难阅读!抱歉。DoneThanks的回答。这太好了!有没有办法让我把3个选项,而不仅仅是低和高?你可以级联三元,我编辑了我的答案来反映这一点。