Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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
如何绑定列表<&燃气轮机;到dataGridview C#_C#_Winforms - Fatal编程技术网

如何绑定列表<&燃气轮机;到dataGridview C#

如何绑定列表<&燃气轮机;到dataGridview C#,c#,winforms,C#,Winforms,我不熟悉Windows应用程序。 我编写了一个代码来读取文件夹中的文件,并逐行读取,找到一些字符串并将其计数显示到dataGridView。 我想填充一个不工作的dataGridview。 我在互联网上尝试过不同的方法,但没有一种有效。 我知道我可能犯了一个愚蠢的错误。 我的代码如下 public class FileDetail { public string filename; public int openConnectionCount;

我不熟悉Windows应用程序。
我编写了一个代码来读取文件夹中的文件,并逐行读取,找到一些字符串并将其计数显示到dataGridView。

我想填充一个不工作的dataGridview。
我在互联网上尝试过不同的方法,但没有一种有效。

我知道我可能犯了一个愚蠢的错误。
我的代码如下

  public class FileDetail
    {
        public  string filename;
        public int openConnectionCount;
        public int closeConnectionCount;
    }


    private void button1_Click(object sender, EventArgs e)
    {
        int openConnectionCount = 0;
        int closeConnectionCount = 0;
        List<FileDetail> fileDetails =new List<FileDetail>();
        foreach (string file in Directory.EnumerateFiles(textBox1.Text, "*.*", SearchOption.AllDirectories))
        {
            FileDetail fileDetail =new FileDetail();
            fileDetail.filename = file;
            // Read the file as one string.
            using (StreamReader myFile = new StreamReader(file))
            {

                string line;
                while ((line = myFile.ReadLine()) != null)
                {
                    if (line.Contains(" OpenConnection()")) openConnectionCount++;
                    if (line.Contains(" CloseConnection()")) closeConnectionCount++;
                }
                fileDetail.openConnectionCount = openConnectionCount;
                fileDetail.closeConnectionCount = closeConnectionCount;
            }
            fileDetails.Add(fileDetail);
            openConnectionCount = 0;
            closeConnectionCount = 0;
        }



        dataGridView1.AutoGenerateColumns = false;

        dataGridView1.Columns.Add("filename", "File Name");
        dataGridView1.Columns.Add("openConnectionCount", "Open Connection");
        dataGridView1.Columns.Add("closeConnectionCount", "close Connection");

        dataGridView1.Columns[0].DataPropertyName = "filename";
        dataGridView1.Columns[1].DataPropertyName = "openConnectionCount";
        dataGridView1.Columns[2].DataPropertyName = "closeConnectionCount";

        var filenamesList = new BindingList<FileDetail>(fileDetails); // <-- BindingList
        dataGridView1.DataSource = filenamesList;


        //dataGridView1.DataSource = fileDetails;




        //dataGridView1.b

        //foreach (var fileDetail in fileDetails)
        //{
        //    label1.Text += "FileName:=" + fileDetail.filename + "\t Open Connection:= " +
        //                   fileDetail.openConnectionCount + "\t close connection:=" +
        //                   fileDetail.closeConnectionCount+"\n";
        //}
    }
公共类文件详细信息
{
公共字符串文件名;
公共int openConnectionCount;
公共int closeConnectionCount;
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
int openConnectionCount=0;
int closeConnectionCount=0;
List fileDetails=新列表();
foreach(Directory.EnumerateFiles(textBox1.Text,“***”,SearchOption.AllDirectories)中的字符串文件)
{
FileDetail FileDetail=新的FileDetail();
fileDetail.filename=文件;
//将文件作为一个字符串读取。
使用(StreamReader myFile=新StreamReader(文件))
{
弦线;
而((line=myFile.ReadLine())!=null)
{
if(line.Contains(“OpenConnection()”)openConnectionCount++;
if(line.Contains(“CloseConnection()”)closeConnectionCount++;
}
fileDetail.openConnectionCount=openConnectionCount;
fileDetail.closeConnectionCount=closeConnectionCount;
}
添加(fileDetail);
openConnectionCount=0;
closeConnectionCount=0;
}
dataGridView1.AutoGenerateColumns=false;
dataGridView1.Columns.Add(“文件名”、“文件名”);
dataGridView1.Columns.Add(“openConnectionCount”、“openconnection”);
dataGridView1.Columns.Add(“closeConnectionCount”、“closeconnection”);
dataGridView1.Columns[0].DataPropertyName=“filename”;
dataGridView1.Columns[1].DataPropertyName=“openConnectionCount”;
dataGridView1.Columns[2]。DataPropertyName=“closeConnectionCount”;

var filenamesList=newbindingslist(fileDetails);//数据绑定仅适用于Set/Get属性,而不适用于公共字段

尝试更改您的
文件详细信息
,如下所示:

public class FileDetail
{
    public  string filename { get; set; }
    public int openConnectionCount { get; set; }
    public int closeConnectionCount { get; set; }
}

如果要自动生成datagridview的列,则可以将其用作

public class FileDetail
{
    [DisplayName("File Name")]    
    public  string filename { get; set; }
    [DisplayName("Open Connection")]    
    public int openConnectionCount { get; set; }
    [DisplayName("close Connection")]    
    public int closeConnectionCount { get; set; }
}
此外,您还可以使用列表作为数据源,而无需将源绑定为

dataGridView1.DataSource = fileDetails.ToArray();
有关更多信息,请查看此链接

我没有注意到,+1:D