我正在制作一个用户可以修改远程文件的程序。我将所选文件(取决于某些预定义的标准)放在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,则始终保存完整文件路径,但只显示文件名?我不希望用户看到文件的完整文件路径,只是文件名。
答案 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);