写了个读取EXIF拍摄时间更改文件名的程序 但读取到的string始终有问题 求助

主程序:

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;

namespace Photo_name_change_tool
{
    public partial class Form1 : Form
    {
        public List<string> FilesName = new List<string>();

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog FilesPathDialog = new FolderBrowserDialog();
            FilesPathDialog.Description = "Browse Photo Files Path:";
            if (FilesPathDialog.ShowDialog() == DialogResult.OK)
            {
                string FilesPath = FilesPathDialog.SelectedPath;
                textBox1.Text = FilesPath;
                ScanPhotoFiles(FilesPath);
            }
        }

        private void ScanPhotoFiles(string FilesPath)
        {
            FilesName.Clear();
            DirectoryInfo FilesFolder = new DirectoryInfo(FilesPath);
            for (int i = 0; i < FilesFolder.GetFiles().Length; i++)
            {
                if (FilesFolder.GetFiles()[i].Length > 0 && FilesFolder.GetFiles()[i].Extension == ".jpg")
                {
                    ListViewItem lvi = new ListViewItem();
                    lvi.Text = (i + 1).ToString();
                    lvi.SubItems.Add(FilesFolder.GetFiles()[i].Name);
                    lvi.SubItems.Add("-");
                    lvi.SubItems.Add("-");
                    lvi.SubItems.Add("-");
                    listView1.Items.Add(lvi);
                    FilesName.Add(FilesFolder.GetFiles()[i].Name);
                }
            }
            ChangePhotoFilesName();
        }

        private void ChangePhotoFilesName()
        {
            for (int i = 0; i != FilesName.Count; i++)
            {
                Exif.Picturexif em = new Exif.Picturexif();
                Exif.Picturexif.Metadata m = em.GetEXIFMetaData(textBox1.Text + @"\" + FilesName[i]);

                //获取EXIF 照片拍摄时间
                if (m.DatePictureTaken.DisplayValue != null)
                {
                    listView1.Items[i].SubItems[2].Text = m.DatePictureTaken.DisplayValue;
                }
                else
                {
                    listView1.Items[i].SubItems[2].Text = "-";
                }

                //更改文件名为EXIF 照片拍摄时间
                if (listView1.Items[i].SubItems[2].Text != "-")
                {
                    string TargetName = listView1.Items[i].SubItems[2].Text.ToString();
                    TargetName = TargetName.Replace(":", "");
                    TargetName = TargetName.Replace(" ", "_");
                    listView1.Items[i].SubItems[3].Text = TargetName+".jpg";
                    if (listView1.Items[i].SubItems[1].Text != listView1.Items[i].SubItems[3].Text)
                    {
                        //File.Move(textBox1.Text + @"\" + listView1.Items[i].SubItems[1].Text, textBox1.Text + @"\" + listView1.Items[i].SubItems[3].Text);
                        listView1.Items[i].SubItems[4].Text = "Successful";
                    }
                }
            }
        }
    }
}

Exif类参照:
http://www.cnblogs.com/yeminglong/p/3172719.html

问题出在listView1.Items[i].SubItems[2].Text = m.DatePictureTaken.DisplayValue;

listView1.Items[i].SubItems[3].Text = TargetName+".jpg"; 没有后面的.jpg

且File.Move(textBox1.Text + @"\" + listView1.Items[i].SubItems[1].Text, textBox1.Text + @"\" + listView1.Items[i].SubItems[3].Text);提示路径中有非法字符

求解,显示都是正常的,为啥就是无法拼接这个字符串,为啥更改文件名会出现路径非法。

感谢!

路径C:\Users\Air\Desktop\新建文件夹

源文件名:
C:\Users\Air\Desktop\新建文件夹\1.jpg

新文件名:
C:\Users\Air\Desktop\新建文件夹\20150301_135212.jpg

MessageBox 显示出来也正常,但执行时就报错。

相当诡异。

已将项目压缩上传至临时服务器:
http://dev.airsky.cc/csdn_16615.rar