-1

我在将 listView 写入 txt 时遇到问题,我的代码将所有列(第一列和第二列)写入 txt。我有这个代码:

        using (StreamWriter sw = new StreamWriter("databaseEN.txt"))
        {
            foreach (ListViewItem item in listView1.Items)
            {
                sw.WriteLine(item.Text);
                for (int i = 1; i < item.SubItems.Count; i++)
                {
                    sw.WriteLine(item.SubItems[i].Text);
                }
            }
        }

我需要将第一列而不是所有列写入我的 txt,如何更改?

4

3 回答 3

1

AListViewItem包含许多SubItems,您可以从item变量中访问它们。

item.SubItems[0].Text;

这将只得到第一列。您还可以将列名指定为字符串。

于 2013-05-03T18:40:56.893 回答
0

这就是我想出的。这个对我有用。由于注释和添加的新行,它看起来很长,因此在保存时它在文本文件中看起来不错。

// Save File Button
        private void save_button_Click(object sender, EventArgs e)
        {

            System.IO.File.AppendAllText(@"C:\bbbb.txt", Environment.NewLine + Environment.NewLine);

            // Columns NAMES
            for (int c = 0; c < timeTable_listView.Columns.Count; c++)
            {
            System.IO.File.AppendAllText(@"C:\bbbb.txt", timeTable_listView.Columns[c].Text+"\t");
            }

            // Add new Line int the txt file
            System.IO.File.AppendAllText(@"C:\bbbb.txt", Environment.NewLine + Environment.NewLine);


            // Get all Items  "loop All items"
            for (int i = 0; i < timeTable_listView.Items.Count; i++)
            {

                // Loop all Sub Items of the Current Item "[i]"
                for (int a = 0; a < timeTable_listView.Items[i].SubItems.Count; a++)
                {
                    // Write the sub item "[a]" to the file with "tab betwen each item"
                    System.IO.File.AppendAllText(@"C:\bbbb.txt", timeTable_listView.Items[i].SubItems[a].Text + "\t");
                }

                // Add new Line "the new Row" starts at new line
                System.IO.File.AppendAllText(@"C:\bbbb.txt", Environment.NewLine);
            }

        }

图片:表格

图片:TXT 文件

仅代码:------------------------------------------------------------ -----------------

private void save_button_Click(object sender, EventArgs e)
        {
System.IO.File.AppendAllText(@"C:\bbbb.txt", Environment.NewLine + Environment.NewLine);

            for (int c = 0; c < timeTable_listView.Columns.Count; c++)
            {
            System.IO.File.AppendAllText(@"C:\bbbb.txt", timeTable_listView.Columns[c].Text+"\t");
            }

            System.IO.File.AppendAllText(@"C:\bbbb.txt", Environment.NewLine + Environment.NewLine);

            for (int i = 0; i < timeTable_listView.Items.Count; i++)
            {

                for (int a = 0; a < timeTable_listView.Items[i].SubItems.Count; a++)
                {
                    System.IO.File.AppendAllText(@"C:\bbbb.txt", timeTable_listView.Items[i].SubItems[a].Text + "\t");
                }
                System.IO.File.AppendAllText(@"C:\bbbb.txt", Environment.NewLine);
            }

        }
于 2020-05-04T10:15:13.990 回答
-1

删除此行:

for (int i = 1; i < item.SubItems.Count; i++)
{
    sw.WriteLine(item.SubItems[i].Text);
}

编辑:从这里提取http://msdn.microsoft.com/en-us/library/aa983553(v=vs.71).aspx

Windows 窗体 ListView 控件可以为详细信息视图中的每个项目显示附加文本或子项目。第一列显示项目文本,例如员工编号。第二、第三和后续列显示第一个、第二个和后续关联子项。

于 2013-05-03T18:41:21.133 回答