Laden...

Wie im WebBrowser Control abfragen, welche Datei gerade ausgewählt wurde & den Dateinamen anzeigen?

Erstellt von mozi75 vor 3 Jahren Letzter Beitrag vor 3 Jahren 809 Views
M
mozi75 Themenstarter:in
6 Beiträge seit 2018
vor 3 Jahren
Wie im WebBrowser Control abfragen, welche Datei gerade ausgewählt wurde & den Dateinamen anzeigen?

Hallo liebe Gemeinde,

ich möchte gern einen simplen Filebrowser in meine Application einbauen. Das hat auch funmtioniert.

Beispiel:

 webBrowser1.Navigate(@"c:\temp\"); //Testpath

Meine Idee ist nun, eine Art "Dateivorschau" in einem 2. webBrowser Control naneben zu realsieren.
sofern ein Dokument mit der Maus "markiert" wird, soll im 2. webBrowser eine Vorschau des Dokumentes erscheinen. Das sind meist PDF, Word, Excel oder MSG-Dateien.
Die Anzeige der Dokumente im webBrowser ist nicht das Problem.

Wie kann ich im webBrowser Control abfragen, welche Datei gerade ausgewählt wurde und mir den Dateinamen als string zurückgeben lassen?
Habt Ihr für mich vielleicht einige Denkanstöße? Bei Google findet man meist nur etwas zu HTML-dateien, was in meinem Fall ja nicht der Fall ist.

Vielen dank im Voraus für Eure Hilfe. 😃

Viele Grüße Sven

4.942 Beiträge seit 2008
vor 3 Jahren

Hallo,

du meinst, während der Anwender mit der Maus über einen Link "hovered"?

Jedes HtmlDocument-Element (HtmlElement) hat ein MouseOver-Ereignis, s. z.B. Get word from Web browser control on mouse hover event (also den Code so anpassen, daß für jedes Link-Element das MouseOver-Ereignis abonniert wird).

PS: Mittels HtmlElement.GetAttribute kommst du an die "Target"-Url:


if (htmlElement.TagName == "A") // anchor element
{
  string url = htmlElement.GetAttribute("href");
  // ...
}

M
mozi75 Themenstarter:in
6 Beiträge seit 2018
vor 3 Jahren

Hallo,

Danke für Deine Antwort.

Nein, wenn der Nutzer einen Eintrag markiert.
Im webbrowser wird ja eine Liste der Dateien aus dem Ordner C:\Temp angezeigt.
Wenn ich jetzt auf eine Datei in der Liste klicke (nur einmal, dass es markiert ist) dann soll der Name zurückgegeben werden.

Hab gesehen, dass es auch Click-Ereignis gibt. Ich werde das mal testen und dann berichten.

DANKE

16.842 Beiträge seit 2008
vor 3 Jahren

Den WebBrowser sollte man eigentlich gar nicht mehr verwenden, denn er basiert auf einer uralten, wirklich ur-ur-alten IE7 (mit Registry Eintrag IE8) Engine.

Warum verwendest Du denn überhaupt für diese Aufgabe? Dafür ist er ja eigentlich nicht gedacht.

M
mozi75 Themenstarter:in
6 Beiträge seit 2018
vor 3 Jahren

Hi,
gibt es denn eine Alternative um in einer Anwendung einen simplen Filebrowser zu erstellen und die Dacoumente auch aus der Anwendung heraus zu starten?

T
2.224 Beiträge seit 2008
vor 3 Jahren

Du willst ein Web Browser als File Browser verwenden?
Macht doch keinen Sinn.

Dafür hast du in Winforms schon fertige Controls.
Hier musst du das Rad nicht neu erfinden.
Warum willst du aber über einen File Browser Dokumente ausführen?
Das sollte man eigentlich nie über einen File Browser machen sondern direkt im Explorer.
Ansonsten spricht auch nichts dagegen, wenn du die Datei auswählst und ein von dir umgesetzter Prozess dann die ausgewählte Datei verarbeitet.

OpenFileDialog

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.842 Beiträge seit 2008
vor 3 Jahren

T-Virus, les mal die Beiträge.
Er verwendet den Browser zum Auflisten; kein Open File Dialog.

gibt es denn eine Alternative um in einer Anwendung einen simplen Filebrowser zu erstellen und die Dacoumente auch aus der Anwendung heraus zu starten?

Nein, weil .NET ein Entwicklungsframework ist und prinzipiell nicht unbedingt fertige Komponenten liefert.
Ja, Du musst das Zeugs auslesen und in einer Tabelle anzeigen.

Das Problem ist, dass Du halt einfach hier den Browser "missbrauchst" (okay, es funktioniert einfach - passt); aber im Falle vom Webbrowser das Ding einfach uralt ist - und auch nicht in der neuen .NET Welt verfügar ist; und das ist gut so.
Die einzige "echte" Browser-Alternative für das WebBrowser-Control ist das CefSharp-Projekt.

4.942 Beiträge seit 2008
vor 3 Jahren

Habe gerade selber noch mal den WebBrowser ausprobiert. Dieser (bzw. genauer der "Internet Explorer (IE)") verwendet bei (lokalen) Verzeichnissen intern wohl eine ListView (sieht man auch am Kontextmenü).
Da wirst du aber nicht per Code drankommen - daher rate ich dir auch zu einem eigenen Anzeige-Element, s. z.B. Windows Forms: How to Make a File Browser in C# (s.a. [Snippet] Verzeichnisse und Dateien rekursiv durchlaufen - auch wenn du keine Rekursion benötigst).

PS: Bei anderen Browsern (z.B. Firefox) wird direkt bei Klick auf eine Datei diese geöffnet (daher wußte ich erst nicht so genau, was du mit "markiert" gemeint hast).

PPS: @Abt: T-Virus meinte wohl den OpenFileDialog als Alternative zum Auswählen einer Datei.

M
mozi75 Themenstarter:in
6 Beiträge seit 2018
vor 3 Jahren

Hi TH

Danke für den Link. Dann werd ich mich mal etwas intensiver damit beschäftigen.
Über das WebBrowser Control war es recht einfach und hatte alles so gemacht, wie ich es brauchte.

Danke für Eure Hilfe.

3.825 Beiträge seit 2006
vor 3 Jahren

Das WebBrowser Control ist so alt dass nicht mal Google Maps funktioniert.

So kann man es pimpen : https://stackoverflow.com/questions/17922308/use-latest-version-of-internet-explorer-in-the-webbrowser-control

Ich würde die Dateien in einem ListView oder als Baumstruktur in einem TreeView darstellen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3