Wie kann ich von ContextMenuStrip ItemClicked Ereignis, das Verzeichnis, klickte ich auf?
Habe ich ein Bibliothek-Klasse-Projekt mit einem Benutzer-Steuerelement auf das Benutzersteuerelement ich über explorer wie windows explorer kann ich ein Verzeichnis auswählen und mit der rechten Maustaste habe ich ContextMenuStrip-Menü mit Bearbeiten, Einfügen, Kopieren, Hochladen...
Wenn ich auf Upload die ich brauche, um aus dem Element(Verzeichnis) klickte ich auf all das Verzeichnis, Unterverzeichnisse und allen Dateien. Ich habe versucht, es zu tun mögen dieses:
private void menuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
if (e.ClickedItem.Text == "Upload")
{
AllFiles = System.IO.Directory.GetFiles(e.ClickedItem.Text, "*.*", System.IO.SearchOption.AllDirectories);
Bgw.RunWorkerAsync();
}
}
Aber e.ClickedItem.Text ist nicht der Ordner den ich ausgewählt habe, aber der "Hochladen" - Menü text.
Was ich brauche, ist, dass AllFiles(String[]) enthält alle Unterverzeichnisse und alle Dateien damit ich Sie später auf form1.
Im Allgemeinen wird In form1 ich hochladen will den ganzen, vollständigen ausgewählte Verzeichnis und alle Unterverzeichnisse und Dateien auf meinen ftp.
Muss ich nur finden, wie man Sie alle.
Ich bin für das Recht auf wählen Sie den directory-treeView.
Dies ist der Mouse-Up-Ereignis:
void treeView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);
if (treeView1.SelectedNode != null)
{
menuStrip.Show(treeView1, e.Location);
}
}
}
Und die Nach der Select-Ereignis:
void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
AddDirectories(e.Node);
AddFiles(e.Node.FullPath.ToString());
statusBar1.Text = iDirectories.ToString() + " Folder(s) " + iFiles.ToString() + " File(s)";
}
- Was control/Komponente-Typ verwenden Sie für Ihre "explorer-wie windows explorer"? In anderen Worten, was ist der Steuer - /Komponente-Typ Sie sind ein rechts-Klick auf?
- Ich denke, dass seine eigene Kontrolle... In jedem Fall, in eine "generische" Weise, unabhängig von der Art der Steuerung, er kann tun, was ich schlage vor, in meiner Antwort.
- Recht, ich vergaß zu erwähnen, die Kontrolle und die treeView-Mouse-Up-Ereignis und Nach dem Ereignis Select.
- Und ich fand jetzt, dass: treeView1.SelectedNode.FullPath; geben Sie mir die ausgewählten Verzeichnisses.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie nicht zu viel Informationen, ich werde sein "Generika".
Betrachten Sie Ihre event-handler:
Ihre Frage ist, wie können Sie wiederherstellen, die informartion, die Sie von Ihrem Benutzer control zu effectivelly "etwas tun".
Sie können Folgendes tun:
Vorausgesetzt, dass Ihr die Kontrolle über eine öffentliche string-Eigenschaft namens SelectedDirectory mit der Benutzer-Auswahl, können Sie etwas tun, wie dieses
Ich muss hier aber zeigen Sie, dass die "GetFiles wird zurückkehren, NUR Dateien. Es wird nicht wieder Unterverzeichnisse. Sie wiederherstellen können Sie die Verzeichnisse aus dem Weg, aber wenn es leere Verzeichnisse, die Sie nicht haben, diese von der Liste.
So, in jedem Fall, am besten ist es einfach passieren, um die "Arbeiter" den Pfad und lass die worker iteriert über die sub-Verzeichnisse mit einem mix von GetFiles und GetDirectories.
... ODER
Wenn Sie mit DotNet >= 4.0 verwenden, können Sie GetFileSystemInfos statt:
In diesem Fall müssen Sie ändern Sie Ihre AllFiles Typ FileSystemInfo[] Typ.