Avatar billede denn1824 Nybegynder
11. november 2013 - 10:32 Der er 3 kommentarer

hjælp til c# database program

Hej, håber i kan hjælpe mig.
har den kode som fungere sådan at jeg kan vælge flere filer men kan kun hente/gemme den sidste valgte fil. jeg vil gerne have sådan at alle de valgte filer bliver gemt.
på forhånd tak. :-)





        private void button3_Click(object sender, EventArgs e)
        {

            ListView.SelectedListViewItemCollection items = this.listView1.SelectedItems;

            //filnavnet på den/de valgte filer dannes
            string filnavne = "";

            foreach (ListViewItem item in items)
            {
                filnavne = item.SubItems[0].Text + item.SubItems[2].Text;
            }

            string copyFrom = filepath + filnavne;

            //Brugeren vælger stien som filerne skal kopieres til

            string folderPath = string.Empty;

            FolderBrowserDialog fdb = new FolderBrowserDialog();

            if (fdb.ShowDialog() == DialogResult.OK)
            {
                folderPath = fdb.SelectedPath;


                folderPath = folderPath + "\\" + filnavne;


                System.IO.File.Copy(copyFrom, folderPath);

                MessageBox.Show("file(s) copied");
            }
        }
Avatar billede Syska Mester
11. november 2013 - 10:47 #1
Øhhh,

Du looper over alle dem som er valgt i listen. Det er som sådan fint nok.

Men du overskriver filnavnet hver gang:
  foreach (ListViewItem item in items)
            {
                filnavne = item.SubItems[0].Text + item.SubItems[2].Text;
            }

Dvs din variable: "filnavne" indeholder altid kun den sidste i din liste.

Du skal nok tilføje dem til en liste.

Du skal nok så også loop over den nye liste i den "SaveDialog".
Avatar billede denn1824 Nybegynder
11. november 2013 - 11:52 #2
kan du evt komme med en løsningen?
var godt klar over at den kopieret filen over så det kun var den sidste der blev gemt
Avatar billede crazysnap Seniormester
11. november 2013 - 13:24 #3
Du kunne f.eks. gøre følgende:

private void button3_Click(object sender, EventArgs e)
{
    ListView.SelectedListViewItemCollection items = listView1.SelectedItems;

    //Hvis ingen filer er valgt, gør ingenting
    if (items.Count == 0)
        return;

    FolderBrowserDialog fdb = new FolderBrowserDialog();

    //Hvis ingen mappe er valgt, gør intet.
    if (fdb.ShowDialog() != DialogResult.OK)
        return;

    string strNewFolderPath = fdb.SelectedPath;
    foreach (ListViewItem item in items)
    {
        string strFileName = System.IO.Path.GetFileName(item.SubItems[0].Text + item.SubItems[2].Text);
             
        string strOldFilePath = System.IO.Path.Combine(filepath, strFileName);
        string strNewFilePath = System.IO.Path.Combine(strNewFolderPath, strFileName);

        System.IO.File.Copy(strOldFilePath, strNewFilePath);

        MessageBox.Show("file(s) copied");
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester