基本的に私が行っているのは、ローカル ドライブからファイルを収集し、それらをすべて C:\ReportFiles にコピーすることです。ボタンを2つ作りました。添付して保存します。Attach は、ファイルを参照して取得します。dataGrid1 では、古いパスとファイル名を使用しています。すべてのファイルの収集が終了したら。保存ボタンをクリックします。これにより、データグリッドからパス列が取得され、データグリッドのパス列から C:\ReportFiles へのファイルのコピーが開始されます。ループがこの仕事をします。
問題はリストです。データグリッド列をコレクションのリストとして作成できません。これがクリアされることを願っています。
データグリッド コード:
<DataGrid AutoGenerateColumns="False" Height="193" HorizontalAlignment="Left" Margin="169,6,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" ItemsSource="{Binding ReportFiles}">
<DataGrid.Columns>
<DataGridTextColumn Header="Path" Binding="{Binding Path}" />
<DataGridTextColumn Header="FileName" Binding="{Binding FileName}" />
</DataGrid.Columns>
</DataGrid>
MainWindow.cs:
public partial class EditReport : Window
{
public List<ReportFiles> listabove = new List<ReportFiles>();
public class ReportFiles
{
public string RealName { get; set; }
public string TargetName { get; set; }
}
private void buttonAttach_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
if (dlg.ShowDialog() == true)
{
foreach (string str in dlg.FileNames)
{
ReportFiles list = new ReportFiles();
list.RealName = str;
list.TargetName = filename;
dataGrid1.Items.Add(new { RealName = list.RealName, TargetName = list.TargetName });
string fileName = @"C:\Temp\" + filename + System.IO.Path.GetExtension(str).Trim(); ;
if (File.Exists(fileName))
continue;
else
{
try
{
File.Copy(str, fileName);
}
catch (Exception err)
{
MessageBox.Show(err.Message);
return;
}
}
}
}
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
ReportFiles rep = new ReportFiles();
DataRowView paths = (System.Data.DataRowView)dataGrid1.Items[0];
rep.RealName = Convert.ToString(paths.Row.ItemArray[0]);
}
}