tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
18
ZUGRIFFE
1349
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mycitylive mycitylive ist offline Rookie
    Registriert seit
    Jul 2007
    Beiträge
    9
    Guten Morgen zusammen kann mir einer hier mal helfen ich möchte eine Datei im bestimmten Verzeichniss suchen inbegriffen der Unterverzeichnisse gefundene Datei auswählen und ein kopiervorgang starten!

    Für jede Hilfe wäre ich dankbar!

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
     
    namespace Maschine_Tool
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void btn_suchen_Click(object sender, EventArgs e)
            {
                try
                {
                    listBox1.Items.Clear();
                    //Verzeichnis angeben wo gesucht werden soll
                    //DirectoryInfo di = new DirectoryInfo("D:\\dnc-500");
                    //DirectoryInfo di = new DirectoryInfo("D:\\Tools");
                    DirectoryInfo Di = new DirectoryInfo("D:\\Tools");
                    FileInfo[] nPfad = Di.GetFiles(textBox1.Text, SearchOption.AllDirectories);
                    Int32 nLengePfad = nPfad.GetLength(0);
                    listBox1.Items.AddRange(nPfad);
     
                }
                catch (Exception)
                {
                    MessageBox.Show("Die gesuchte Datei existiert nicht");
     
                }
               
     
            }
     
            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                try
                {
                    Application.Exit();
                }
                catch (Exception)
                {
                    MessageBox.Show("Beim Beenden ist ein unerwarteter Fehler aufgetreten");
                }
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
     
     
                //System.Diagnostics.Process.Start("D:\\dnc-500\\kopieren.cmd");
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                lb_version.Text = Application.ProductVersion; 
            }
     
        }
    }
     

  2. #2
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Hallo,

    Soweit ich in deinem Code sehen kann hast du die Dateien schon gefunden:
    Code csharp:
    1
    
     FileInfo[] nPfad = Di.GetFiles(textBox1.Text, SearchOption.AllDirectories);

    Dann musst du nur mehr für jede dieser FileInfo Instanzen einem File.Copy aufrufen um die Dateien zu kopieren.
     

  3. #3
    mycitylive mycitylive ist offline Rookie
    Registriert seit
    Jul 2007
    Beiträge
    9
    Könntest du mir ein Tipp geben wie ich das machen muß!

    Ich möchte quasi die Gefundene Dateien eine Auswählen und per Button denn Kopiervorgang starten auf ein festes laufwerk!

    Wäre echt klasse wenn du mir dabei helfen würdest

    Liebe Grüße
     

  4. #4
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Hallo,

    Ich würde irgendsowas versuchen:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    //Die beiden müssen natürlich gesetzt werden
    string sourcePath;
    string targetPath;
     
    foreach (FileInfo fi in nPfad)
    {
        //Überprüfen ob das Verzeichnis existiert
        string relPath  = fi.DirectoryName.Substring(sourcePath.Length);
     
        if (!Directory.Exists(targetPath + relPath))
        {
            //Erstellen da noch nicht vorhanden
            Directory.CreateDirectory(targetPath + relPath);
        }
     
        //Datei kopieren
        string relFile = fi.Fullname.Substring(sourcePath.Length);
        File.Copy(fi.Fullname, targetPath + relFile, true);
    }

    Ich hab das jetzt im Browser programmiert, daher keine Garantie der syntaktischen Korrektheit.
     

  5. #5
    mycitylive mycitylive ist offline Rookie
    Registriert seit
    Jul 2007
    Beiträge
    9
    Hi,
    aber ich suche nach einer Datei die werden in einer listbox angezeigt und dort wollte ich eine Datei auswählen und per Button an einen vorgegebenen Laufwerk kopieren
    Geändert von mycitylive (02.08.11 um 12:13 Uhr)
     

  6. #6
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Hallo,

    Du musst das natürlich schon in den Code aus deinem ersten Posting einbauen. Ich hab dir nur die grobe Struktur zusammengebaut.
     

  7. #7
    mycitylive mycitylive ist offline Rookie
    Registriert seit
    Jul 2007
    Beiträge
    9
    Erstmal danke....

    Das hat super geklappt wenn du mir jetzt noch sagst wie ich es hinbekomme wenn ich die Datei auswähle in der Listbox und dann denn button kopieren drücke! Mache ich hier ein Salto
    Geändert von mycitylive (02.08.11 um 12:29 Uhr)
     

  8. #8
    Memfis Memfis ist offline Mitglied Silber
    Registriert seit
    Jul 2003
    Beiträge
    99
    Da bin ich nach langer Suche ja fast auf das gestoßen, was ich auch machen will, allerdings möchte ich die Dateien, welche im ListView aufgelistet werden nicht kopieren, sondern öffnen. Es handelt sich um Word, Excel, etc. Dateien, welche mit der entsprechenden Anwendung dann geöffnet werden sollen.

    Kann jemand verraten, wie das funktioniert?
     

  9. #9
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo,

    starten von Programmen und Dokumenten kannst du mit der Klasse System.Diagnostics.Process erledigen.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  10. #10
    Memfis Memfis ist offline Mitglied Silber
    Registriert seit
    Jul 2003
    Beiträge
    99
    Danke, aber wie geht es dann weiter? Ich suche ja Dateien, die mir in einem ListView angezeigt werden. Ich markiere die gewünschte Datei und mache den Rechtsklick und wähle öffnen (Einfacher wäre ein Doppelklick, aber immer der Reihe nach). Nun soll die Datei mit dem Programm geöffnet werden, welchem die Dateiendung zugeordnet ist. Also bei *.doc-Dokumenten soll die Datei in Word geöffnet werden, bei *.xls in Excel, etc.
    Geändert von Memfis (24.01.12 um 12:47 Uhr)
     

  11. #11
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von Memfis Beitrag anzeigen
    Danke, aber wie geht es dann weiter?
    Schlage in der Hilfe bzw. MSDN die oben genannte Klasse nach und schaue dir die Funktion und Verwendung an (dort gibt es auch Beispiele). Dann kannst zu versuchen, für deine konkrete Anwendung eine Implementierung zu bauen. Falls da Probleme gibt, erkläre sie und zeige den betreffenden Code.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  12. #12
    Memfis Memfis ist offline Mitglied Silber
    Registriert seit
    Jul 2003
    Beiträge
    99
    Ich habe mich gestern noch eine ganze Weile mit dem Thema beschäftigt und habe es immerhin geschafft eine fest im Quelltext verankerte Datei öffnen zu können. Nun will ich aber, dass ich eine Datei öffnen kann, welche im ListView zuvor markiert wurde. Im Quelltext ist auch ein Contextmenü vorgesehen, aber es erscheint leider nicht. Warum? Das Problem steht in direktem Zusammenhang mit diesem Thread, aber ich poste hier noch einmal das Bild der GUI und den Quelltext, den ich bislang habe.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Linq;
    using System.Windows.Forms;
    using System.IO;
    using System.Diagnostics;
     
    namespace Suche
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                cmbLaufwerk.Items.AddRange(Environment.GetLogicalDrives());
            }
     
            private void cmdSuchen_Click(object sender, EventArgs e)
            {
                listView1.Items.Clear();
                string path = cmbLaufwerk.Text;
                string searchPattern = "*"+txtSuchbegriff.Text+"*";
                try
                {
     
                    DirectoryInfo di = new DirectoryInfo(path);
     
                    FileInfo[] files = di.GetFiles(searchPattern, SearchOption.AllDirectories);
     
     
     
                    foreach (FileInfo file in files)
                    {
                        progressBar1.Value += 1;
                        if ((file.Name.Contains(txtSuchbegriff.Text)) && (file.Extension == ".doc"))
                        {
                            listView1.Items.Add(file.Name);
                        }
                    }
                }
                catch
                {
                    MessageBox.Show("Es ist ein Fehler aufgetreten");
                }
            }
     
            private void dateiToolStripMenuItem_Click(object sender, EventArgs e)
            {
                this.Close();
            }
     
            private void überToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form2 NeuesFenster = new Form2();
                NeuesFenster.ShowDialog();
            }
     
            private void öffnenToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                Process.Start("WINWORD.exe", "x:\\test.doc");
            }
     
            private void öffnenToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Process.Start("WINWORD.exe", "x:\\test.doc");
            }
        }
    }
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken c# Datei suchen und kopieren-suchegui.png  
    Geändert von Memfis (25.01.12 um 09:44 Uhr)
     

  13. #13
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo,

    die ausgewählte Datei bekommst du über die Methode "SelectedItems" des ListView heraus:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    ListView.SelectedListViewItemCollection co =  listView1.SelectedItems;
            
    if( co.Count > 0 )
    {
        string strFile = co.Item(0).SubItems[0].Text; // Datei
        string strPath = co.Item(0).SubItems[1].Text; // Ort
        
        string strFilePath = Path.Combine(strPath, strFile);
        Process.Start("WINWORD.exe", strFilePath);
    }

    Zu dem Problem mit dem Kontextmenü kann ich nichts weiter sagen. Da du die entsprechende Funktionalität vermutlich im Form-Designer gebaut hast, erscheint der betreffende Code nicht in deiner geposteten Source.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  14. #14
    Memfis Memfis ist offline Mitglied Silber
    Registriert seit
    Jul 2003
    Beiträge
    99
    Danke MCoder. Aber irgendwas scheint mit der Zeile
    Code :
    1
    
    string strFile = co.Item(0).SubItems[0].Text; // Datei"
    nicht zu stimmen. Das Wort "Item" wird rot unterstrichen. In der Fehlerbeschreibung heißt es dazu
    Fehler 1 "System.Windows.Forms.ListView.SelectedListViewItemCollection" enthält keine Definition für "Item", und es konnte keine Erweiterungsmethode "Item" gefunden werden, die ein erstes Argument vom Typ "System.Windows.Forms.ListView.SelectedListViewItemCollection" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Users\Memfis\documents\visual studio 2010\Projects\Suche\Suche\Form1.cs 74 37 Suche
    Ich habe natürlich geguckt, was nach "co." sonnst noch angeboten wird, aber keiner der angebotenen Dinge macht Sinn. Ich habe noch "co.IndexOf" probiert, aber dann ist direkt alles falsch. Vermutlich fehlt mir die Using-Direktive , aber welche soll das sein?
     

  15. #15
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo,

    ja, da hat sich bei mir ein Fehler eingeschlichen

    das "Item" ist überflüssig.
    Code csharp:
    1
    
    string strFile = co[0].SubItems[0].Text; // Datei"
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

Ähnliche Themen

  1. Bilder suchen und kopieren
    Von truelove2k8 im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 31.12.08, 22:16
  2. Datei suchen und kopieren
    Von dark_ghost im Forum Microsoft Windows
    Antworten: 4
    Letzter Beitrag: 22.02.08, 10:40
  3. Suchen und Textteil kopieren
    Von ICPUI im Forum PHP
    Antworten: 27
    Letzter Beitrag: 05.11.06, 16:32
  4. dateien suchen und kopieren
    Von keiichi im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 09.07.05, 15:00
  5. Kopieren/Einfügen/Suchen/Buttons
    Von heintz im Forum Office-Anwendungen
    Antworten: 10
    Letzter Beitrag: 28.05.04, 10:33