在listView

时间:2017-05-29 09:21:23

标签: c# winforms listview

我正在制作一个用户可以修改远程文件的程序。我将所选文件(取决于某些预定义的标准)放在listView中,但我只显示文件名,而不是完整的文件路径。

但问题是,当用户双击某个项目时,它应该打开另一个窗口来修改该项目。

private void listView1_DoubleClick(object sender, EventArgs e)
{
    account = File.ReadAllLines("\\\\myremoteserver\\ftp\\"+listView1.SelectedItems[0].Text+".txt");   
    Form3 passForm = new Form3();
    passForm.ShowDialog();
}

private void Form2_Load(object sender, EventArgs e)
{
    string[] files = Directory.GetFiles("\\\\myremotserver\\ftp\\","*.txt", System.IO.SearchOption.AllDirectories);
    foreach (string s in files)
    {
        listView1.Items.Add(Path.GetFileNameWithoutExtension(s));
    }
}

问题是,文件都在不同的子文件夹中,因此如果我保持原样,它将不会显示文件的正确内容。例如,该文件名为test1.txt,它位于myremoteserver\ftp\testfolder\test1.txt,但在我的程序中,它会尝试在myremoteserver\ftp\test1.txt中找到该文件。

我要问的是,如果能够以这种方式修改listView,则始终保存完整文件路径,但只显示文件名?我不希望用户看到文件的完整文件路径,只是文件名。

1 个答案:

答案 0 :(得分:0)

使用ListViewItem的Tag属性

所以要创建项目......

foreach (string s in files)
{
    ListViewItem lvi = new ListViewItem(Path.GetFileNameWithoutExtension(s));
    lvi.Tag = s;
    listView1.Items.Add(lvi);
}

然后在事件处理程序中......

account = File.ReadAllLines("\\\\myremoteserver\\ftp\\"+listView1.SelectedItems[0].Tag +".txt);