## @【C#】( listview文件读取,显示,保存)

@【C#】(listview—txt文件读取,显示,保存)

(1)在资源管理器中选择对应的控件,并在属性中设置“View”为“Details”。
在这里插入图片描述
(2)添加列标题
在这里插入图片描述
点击【添加】按钮,在右侧【Text】处修改为列标题
在这里插入图片描述
(3)设置整行选择和网格线,设置为true
在这里插入图片描述
(4)打开数据文件txt时,内容显示在Listview1中。

            this.listView1.Items.Clear(); //先清空listview1中所有数据
            OpenFileDialog oFD1 = new OpenFileDialog();
            oFD1.InitialDirectory = "C:\\";   //显示初始目录,
            oFD1.Filter = "txt files(*.txt)|*.txt|All files(*.*)|*.*";   //文件名筛选字符串
            oFD1.FilterIndex = 2;
            oFD1.RestoreDirectory = true;
            //若用户在对话框中单击确定,则结果为DialogResult.OK
            //否则结果为DialogResult.Cancel

            if (oFD1.ShowDialog() == DialogResult.OK)       //打开文件
            {
                MessageBox.Show("成功打开文件:" + oFD1.FileName);    //显示选择的文件名
                FileStream fs = new FileStream(oFD1.FileName, FileMode.Open);  //需添加头文件system.IO
                StreamReader s1 = new StreamReader(fs, Encoding.ASCII);

                string sepatator = ",";  //以逗号分割字符串
                char[] cgap = sepatator.ToCharArray();

                string[][] data = new string[100][];
                for (int i = 0; i < 999; i++)
                {
                    string str1 = s1.ReadLine();   //读取一行字符
                    if (str1 == null) break;
                    string[] str2 = str1.Split(cgap, StringSplitOptions.None); //基于数组中的字符将字符串拆分为多个子字符串
                    ListViewItem b = new ListViewItem(new string[] { str2[0], str2[1], str2[2] });
                    listView1.Items.Add(b);
                }
            }

注:1. oFD1.InitialDirectory = “C:\”; //可以修改为常用目录
2.string sepatator = “,”; //以逗号分割字符串,也可以以空格分隔字符串,只要与数据文件相对应即可
3. ListViewItem b = new ListViewItem(new string[] { str2[0], str2[1], str2[2] }); //有几列便有几个str2[i]

(4)使用listview1中读入的数据进行计算
listview中的数据都是string格式,item.SubItems[i].Text,表示第i列listview中的数据,i从零开始,使用时根据需要进行类型转换。使用foreach循环遍历每一行

 foreach (ListViewItem item in this.listView1.Items)   //每一行
      {
    string name = item.SubItems[0].Text;   //string类型无需转换
    x1 = double.Parse(item.SubItems[1].Text); //转化为double
    x2 = double.Parse(item.SubItems[2].Text);
    /*================计算代码============================
    ============计算出a1,a2,a3,a4=========================
    */
    ListViewItem b = new ListViewItem(new string[] { name, a1.ToString("F6"),                            a2.ToString("F6"),a3.ToString("F6"),a4.ToString(),a5.ToString()});
                        listView2.Items.Add(b);
 }

(5)将计算结果数据显示在Listview2中

   ListViewItem b = new ListViewItem(new string[] { name, a1.ToString("F6"),a2.ToString("F6"),a3.ToString("F6"),a4.ToString(),a5.ToString()});
    listView2.Items.Add(b);

有几列数据都以==a.ToString(“F6”)==的格式转化为string形,再添加到ListViewItem b = new ListViewItem(new string[] { });
最后将b添加到listview2中即可。

(6)保存listview2中的数据

SaveFileDialog sFD1 = new SaveFileDialog();
            sFD1.InitialDirectory = "C:\\";
            sFD1.Filter = "txt files(*.txt)|*.txt|All files(*.*)|*.*";  //保存文件的格式
            sFD1.FilterIndex = 1;
            sFD1.RestoreDirectory = true;
            if (sFD1.ShowDialog() == DialogResult.OK) 
            {
                string s = "";
                for (int m = 0; m <listView2.Items.Count; m++)  //所有项的集合数
                {
                    for (int n = 0; n < listView2.Items[m].SubItems.Count; n++)   // 一个项的所有子项集合数 
                    {
                            s += listView2.Items[m].SubItems[n].Text + "    ";
                    }
                    s += "\r\n";
                }
               using(StreamWriter sw = new StreamWriter(sFD1.FileName))
              {
                 sw.WriteLine(s);   //在文件中添加文本
               }
                MessageBox.Show("成功保存文件:" + sFD1.FileName);
            }

(7)清空

this.listView1.Items.Clear(); //只移除所有的项
this.listView1.Clear(); //从控件中移除所有项和列(包括列表头)

测试:
在这里插入图片描述

  • 7
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值