C# 在C中向ListView显示文本文件数据的内容#

C# 在C中向ListView显示文本文件数据的内容#,c#,forms,listview,text-files,C#,Forms,Listview,Text Files,我的表单中有一个列表视图 在我的文本文件中,我有以下内容: 24-7-2017:13:44:40;x;0.0078;y-0.0147;Z0.9879; 24-7-2017:13:44:41;x;0.0069;y-0.0069;Z1.0104; 24-7-2017:13:44:40表示我要放入listview第一列的时间 x;0.0078;y-0.0147;Z0.9879;是我想要创建三列的地方,将X、Y、Z放在每列中,并将数据放在相应的列中 然后,下一行将位于各自列的第2行 它们之间用“;”

我的表单中有一个列表视图

在我的文本文件中,我有以下内容:


24-7-2017:13:44:40;x;0.0078;y-0.0147;Z0.9879;

24-7-2017:13:44:41;x;0.0069;y-0.0069;Z1.0104;


24-7-2017:13:44:40表示我要放入listview第一列的时间

x;0.0078;y-0.0147;Z0.9879;是我想要创建三列的地方,将X、Y、Z放在每列中,并将数据放在相应的列中

然后,下一行将位于各自列的第2行

它们之间用“;”隔开


如何在listview中显示它?

以下是新的测试答案和解决方案

public Form1()
        {
            InitializeComponent();
            //read the file
            System.IO.StreamReader file =
                           new System.IO.StreamReader("yourFileName.txt");

            //set list view in details mode
            listView1.View = View.Details;

            //Set columns in listview
            listView1.Columns.Add("Date Time");
            listView1.Columns.Add("X");
            listView1.Columns.Add("Y");
            listView1.Columns.Add("Z");
            string line = "";
            //read text file line by line.     
            while (( line = file.ReadLine()) != null)
            {
                var itemMC = new ListViewItem(new[] { line.ToString().Split(';')[0].ToString(), line.ToString().Split(';')[2].ToString(), 
                    line.ToString().Split(';')[4].ToString(), line.ToString().Split(';')[6].ToString() });
                listView1.Items.Add(itemMC);

            }
            file.Close();
        }
以下是输出(来自相关给定数据):


这是新的测试答案和解决方案

public Form1()
        {
            InitializeComponent();
            //read the file
            System.IO.StreamReader file =
                           new System.IO.StreamReader("yourFileName.txt");

            //set list view in details mode
            listView1.View = View.Details;

            //Set columns in listview
            listView1.Columns.Add("Date Time");
            listView1.Columns.Add("X");
            listView1.Columns.Add("Y");
            listView1.Columns.Add("Z");
            string line = "";
            //read text file line by line.     
            while (( line = file.ReadLine()) != null)
            {
                var itemMC = new ListViewItem(new[] { line.ToString().Split(';')[0].ToString(), line.ToString().Split(';')[2].ToString(), 
                    line.ToString().Split(';')[4].ToString(), line.ToString().Split(';')[6].ToString() });
                listView1.Items.Add(itemMC);

            }
            file.Close();
        }
以下是输出(来自相关给定数据):

试试这个

        System.Windows.Forms.ListView listView = new System.Windows.Forms.ListView();
        DateTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
        X = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
        Y = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
        Z = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
        SuspendLayout();

        listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
        DateTime,
        X,
        Y,
        Z});
        listView.GridLines = true;
        listView.View = System.Windows.Forms.View.Details;
        DateTime.Text = "DateTime";
        X.Text = "X";
        Y.Text = "Y";
        Z.Text = "Z";
        this.Controls.Add(this.listView);

        StreamReader file = new StreamReader("filepath");

        string sLine;
        while ((sLine = file.ReadLine()) != null)
        {
            string[] sarr= sLine.Split(';');
            StringBuilder sb = new StringBuilder(sarr[0]);
            sb[sarr[0].IndexOf(':')] = ' ';
            sarr[0] = sb.ToString().Replace(':', '.');

            string[] sData = { sarr[0], sarr[2], sarr[4], sarr[6] };

            ListViewItem item = new ListViewItem(sData);

            listView.Items.Add(item);
        }          
在此之后,您可以将第一个数据添加到listView中,然后执行保持不变的操作。并确保listView属性设置为Details

输出:

试试这个

        System.Windows.Forms.ListView listView = new System.Windows.Forms.ListView();
        DateTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
        X = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
        Y = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
        Z = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
        SuspendLayout();

        listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
        DateTime,
        X,
        Y,
        Z});
        listView.GridLines = true;
        listView.View = System.Windows.Forms.View.Details;
        DateTime.Text = "DateTime";
        X.Text = "X";
        Y.Text = "Y";
        Z.Text = "Z";
        this.Controls.Add(this.listView);

        StreamReader file = new StreamReader("filepath");

        string sLine;
        while ((sLine = file.ReadLine()) != null)
        {
            string[] sarr= sLine.Split(';');
            StringBuilder sb = new StringBuilder(sarr[0]);
            sb[sarr[0].IndexOf(':')] = ' ';
            sarr[0] = sb.ToString().Replace(':', '.');

            string[] sData = { sarr[0], sarr[2], sarr[4], sarr[6] };

            ListViewItem item = new ListViewItem(sData);

            listView.Items.Add(item);
        }          
在此之后,您可以将第一个数据添加到listView中,然后执行保持不变的操作。并确保listView属性设置为Details

输出:



使用
文件读取文件。ReadAllLines
,使用
拆分
分隔行,将它们保存在
可观察集合
中,并将此集合绑定到ListView。请分享您尝试的内容以获取更多信息。@azrin此WPF或WIndows是哪种形式?使用
file.ReadAllLines
读取文件,使用
Split
分隔行,将它们保存在
ObservableCollection
中,并将此集合绑定到您的ListView。请分享您尝试过的内容以获取更多信息。@azrin此WPF或WIndows是哪种形式?OP还要求在ListView的3个不同列中显示。您的答案没有回答问题的这一部分。@MongZhu现在可以了吗?这只在一行中显示数据,并且x、y和z值为missing@MongZhu你的答案是误导性的,当只获取你发布的代码时,OP永远不会得到你发布的图像所描述的结果。这些专栏是从哪里来的?列的标题来自哪里?OP还需要做什么(您没有提到)才能达到这个结果?OP还要求在ListView的3个不同列中显示。您的答案没有回答问题的这一部分。@MongZhu现在可以了吗?这只在一行中显示数据,并且x、y和z值为missing@MongZhu你的答案是误导性的,当只获取你发布的代码时,OP永远不会得到你发布的图像所描述的结果。这些专栏是从哪里来的?列的标题来自哪里?OP还需要做什么(您没有提到)才能达到这个结果?堆栈溢出在提交我的编辑时造成了问题。“这就是为什么,这需要时间。”MongZhu,没错,我添加了一个listview项并添加到列表视图。现在应该编译了。更新了答案,请检查是否有问题。这次我已经在我的机器上测试过了。现在你有了一个工作示例!即使有一个图像,伟大的答案+1@AbdurRahim你好你的回答对我来说意义重大!非常感谢。非常感谢!堆栈溢出在提交我的编辑时造成问题。“这就是为什么,这需要时间。”MongZhu,没错,我添加了一个listview项并添加到列表视图。现在应该编译了。更新了答案,请检查是否有问题。这次我已经在我的机器上测试过了。现在你有了一个工作示例!即使有一个图像,伟大的答案+1@AbdurRahim你好你的回答对我来说意义重大!非常感谢。非常感谢!