Freigeben über


Bereitstellen von Drag-and-Drop-Funktionen für Dateien in einer Visual C#-Anwendung

In diesem Artikel wird gezeigt, wie Sie in einer Visual C#-Anwendung Datei-Drag-and-Drop-Funktionen bereitstellen.

Originalproduktversion: Visual C++
Ursprüngliche KB-Nummer: 307966

Zusammenfassung

Die schrittweise Vorgehensweise, die in diesem Artikel beschrieben wird, veranschaulicht das Bereitstellen von Drag-and-Drop-Funktionen für Dateien in einer Visual C#-Anwendung. Ein ListBox Steuerelement wird als Ziel der Drag-and-Drop-Prozedur der Datei verwendet.

Anforderungen

In dieser Liste werden die empfohlenen Hardware-, Software-, Netzwerkinfrastruktur- und Service Packs beschrieben, die Sie benötigen: Visual C#.

In diesem Artikel wird davon ausgegangen, dass Sie mit den folgenden Themen vertraut sind:

  • Windows Forms ListBox control
  • Windows Forms event handling

Schritte zum Erstellen des Beispiels

Das ListBox-Steuerelement stellt zwei Drag-and-Drop-Ereignisse bereit, die Sie behandeln müssen: DragEnter und DragDrop. Das DragEnter Ereignis tritt auf, wenn Sie ein Objekt innerhalb der Grenzen des Steuerelements ziehen und verwendet werden, um zu bestimmen, ob das objekt, das gezogen wird, eines ist, das Sie für das Steuerelement ablegen möchten. Sie behandeln dieses Ereignis für Fälle, in denen eine Datei oder Dateien auf das Steuerelement gezogen werden. Dadurch kann das entsprechende Symbol angezeigt werden, wenn das Objekt über das Steuerelement gezogen wird, je nachdem, welche Objekte gezogen werden. Das DragDrop Ereignis tritt auf, wenn das gezogene Objekt für das Steuerelement freigegeben wurde. Sie behandeln dieses Ereignis, um das Objekt abzurufen. Das Data-Objekt wird zum Abrufen der Daten verwendet.

Die Methode des GetData Data-Objekts gibt ein Array von Zeichenfolgen zurück, die die vollständigen Pfadnamen der Dateien enthalten, die auf das ListBox Steuerelement gezogen wurden. Sie können diese Dateipfadinformationen verwenden, um alle Vorgänge auszuführen, die für die Dateien erforderlich sind. Sie können beispielsweise Klassen im System.IO Namespace verwenden, um die Dateien zu öffnen und zu lesen, die Dateien zu verschieben oder die Dateien an einen neuen Speicherort zu kopieren. In diesem Beispiel fügen Sie einfach den vollständigen Pfad zu den Dateien hinzu, die auf das ListBox Steuerelement gezogen werden.

Führen Sie die folgenden Schritte aus, um Datei-Drag-and-Drop-Funktionen in einer Visual C#-Anwendung bereitzustellen:

  1. Erstellen Sie eine neue Windows Forms-Anwendung in Visual C# .NET oder Visual C# 2005. Formular1 wird standardmäßig erstellt.

  2. Verwenden Sie die Toolbox, um form1 ein ListBox Steuerelement hinzuzufügen.

  3. Ändern Sie im Eigenschaftenfenster die AllowDrop Eigenschaft des ListBox Steuerelements in "True", damit Objekte auf das Steuerelement gezogen werden können.

  4. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf "Formular1", und klicken Sie dann auf "Code anzeigen".

  5. Um das DragEnter Ereignis zu behandeln, fügen Sie die folgende Methode unterhalb des Codeabschnitts hinzu, den der Windows Form Designer in der Form1 Klasse generiert:

    private void listBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
    {
        if(e.Data.GetDataPresent(DataFormats.FileDrop))
            e.Effect = DragDropEffects.All;
        else
            e.Effect = DragDropEffects.None;
    }
    
  6. Um das DragDrop Ereignis zu behandeln, fügen Sie der Klasse unmittelbar nach der Methode, die Sie in Schritt 5 hinzugefügt haben, die folgende Methode Form1 hinzu:

    private void listBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
    {
        string[] s = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
        int i;
        for(i = 0; i < s.Length; i++)
            listBox1.Items.Add(s[i]);
    }
    
  7. Um die beiden Ereignishandler den Steuerelementereignissen zuzuordnen, fügen Sie den Form1 folgenden Code im Konstruktor nach dem Aufruf hinzu InitializeComponent:

    this.listBox1.DragDrop += new
         System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);
    this.listBox1.DragEnter += new
         System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter);
    
  8. Erstellen Sie das Projekt, und führen Sie es aus.

  9. Ziehen Sie eine oder mehrere Dateien aus dem Desktop oder einem anderen Ordner in das ListBox-Steuerelement. Der vollständige Pfad der Dateien wird dem ListBox Steuerelement hinzugefügt.

References

Weitere Informationen finden Sie auf den folgenden Websites: