Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否使用File.ReadAllLines验证DataGridView中的列?_C#_Winforms_Datagridview_Contains_Datagridviewcolumn - Fatal编程技术网

C# 是否使用File.ReadAllLines验证DataGridView中的列?

C# 是否使用File.ReadAllLines验证DataGridView中的列?,c#,winforms,datagridview,contains,datagridviewcolumn,C#,Winforms,Datagridview,Contains,Datagridviewcolumn,我正在对一个名为“KPI”的列进行验证。 我正在做的是创建一个.txt文件,用于验证列 .txt文件如下所示。 正如您在记事本中看到的,它有4个值 收入 销售量 大骗子 品牌骗局 验证会说,除此之外的任何东西都是“无效的” 下面是我用来从.txt文件中获取值的代码 列表字段=新列表(); var lines=File.ReadAllLines(@“\\SMITSHOME01\Home\u Folder\u 1$\vhernandez\My Documents\Visual Studio

我正在对一个名为“KPI”的列进行验证。 我正在做的是创建一个.txt文件,用于验证列

.txt文件如下所示。


正如您在记事本中看到的,它有4个值

  • 收入
  • 销售量
  • 大骗子
  • 品牌骗局
  • 验证会说,除此之外的任何东西都是“无效的”

    下面是我用来从.txt文件中获取值的代码
    列表字段=新列表();
    var lines=File.ReadAllLines(@“\\SMITSHOME01\Home\u Folder\u 1$\vhernandez\My Documents\Visual Studio 2013\validate.txt”);
    对于(int i=0;i
    但我不太擅长循环,所以我想问是否有人能帮我做。 现在,我要做的就是这样

     for (int i = 0; i < dataGridView.RowCount; i++)
                {
    
                    //MessageBox.Show(dataGridView.Rows[i].Cells["KPI"].Value.ToString()); 
                    if (dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains(fields[i]))
                    {
                        //sb.AppendLine(dataGridView.Rows[i].Cells["KPI"].Value.ToString() + " is Valid.");
                    }
    
                    else if (dataGridView.Rows[i].Cells["KPI"].Value.ToString() == null || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "" || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "KPI" || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "Category")
                    {
    
                    }
                    else
                    {
                        //MessageBox.Show("Row not decimal:" + " [ " + dataGridView[h, i].Value.ToString() + "] in column "  + dataGridView.Columns[h].Name);
                        sb.AppendLine(dataGridView.Rows[i].Cells["KPI"].Value.ToString() + " is **NOT** Valid.");
                    }
                }
    
    for(int i=0;i
    我正在使用
    .Contains()
    进行验证,但我总是得到
    System.ArgumentOutOfRangeException
    ,因为我的
    循环效率低下

    我想在if
    .Contains()
    中动态添加
    字段[]
    ,或者以某种方式引用它,有人能帮我吗

    以下是表格的图片供参考:

    我认为您的入住条件应该是另一种情况:

    if(fields.Contains(dataGridView.Rows[i].Cells["KPI"].Value.ToString()))
    

    @山科拉尔德:np。另外要注意的是:您不能用强类型列表或类似的东西绑定网格吗?这会使你的代码更简洁。你想解释一下吗?我对C#还是个新手。当然。我相信你把gridView绑定到了某个数据源,对吗?该来源的类型是什么?例如,如果您使用ado.net从SQL读取say,您可以更好地填充一些集合(例如列表)并将其绑定到gridView。这将帮助您利用漂亮的linq功能,而不是使用循环和所有功能。数据源来自我导入到
    DataGridView
    的excel文件。
    if(fields.Contains(dataGridView.Rows[i].Cells["KPI"].Value.ToString()))