Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Webbrowser Auswahl

7 views
Skip to first unread message

Renè Walther

unread,
Dec 24, 2009, 7:07:27 AM12/24/09
to
Moin!

Kann mir mal jemand helfen? Hab hier Webbrowser-Control in dem icke eine
temporaere HTM-Datei im lokalen Dateisystem öffne.

Dem Webbrowser moechte ich ein ContextMenu verpassen in dem versch.
Actions, je nach dem, ob was im Webbrowser ausgewählt ist nutzbar sein
sollen.

Leideer finde ich kein Event das die Änderung einer Auswahl signalisiert.
Was kann ich hier tun um zu erkennen wenn Auswahl geändert wurde?

Salut, Renè

Frank Dzaebel

unread,
Dec 24, 2009, 12:02:20 PM12/24/09
to
Hallo Renè,

> Kann mir mal jemand helfen? Hab hier Webbrowser-Control in dem icke
> eine
> temporaere HTM-Datei im lokalen Dateisystem öffne.
> Dem Webbrowser moechte ich ein ContextMenu verpassen in dem versch.
> Actions, je nach dem, ob was im Webbrowser ausgewählt ist nutzbar
> sein
> sollen.

Geht zum Beispiel über DHTML:

[Custom Context Menus, Print from Script, Great Dialogs]
http://msdn.microsoft.com/en-us/library/bb264003.aspx

[oncontextmenu Event (A, ADDRESS, APPLET, ...)]
http://msdn.microsoft.com/en-us/library/ms536914.aspx

oder gleich persistent erweitert:

[Link mit Titel in die Zwischenablage]
http://dzaebel.net/LinkTitle.htm

________________

Wenn ein eigenes WinForm-ContextMenuStrip gebunden
(bzw. mit dem des HTML-DOM ersetzt) werden soll, dann zum Beispiel:

WebBrowser wb = new WebBrowser();

private void Form1_Load(object sender, EventArgs e)
{
wb.Dock = DockStyle.Fill; Controls.Add(wb);
Uri uri; Uri.TryCreate(Path.Combine(Application.StartupPath,
"HTMLPage1.htm"), UriKind.Absolute, out uri);
wb.DocumentCompleted +=
new WebBrowserDocumentCompletedEventHandler(
wb_DocumentCompleted);
wb.Navigate(uri);
}

void wb_DocumentCompleted(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
wb.Document.ContextMenuShowing +=
new HtmlElementEventHandler(
Document_ContextMenuShowing);
}


void Document_ContextMenuShowing(object sender,
HtmlElementEventArgs e)
{
e.ReturnValue = false;
contextMenuStrip1.Show(Cursor.Position);
}
________

> je nachdem, was im Browser ausgewählt ist [...]

das ist mehrdeutig, aber man kann über das DOM
alles über "ausgewählte" Elemente erfahren.
Das aktive ist normal: wb.Document.ActiveElement

Ansonsten weiterführende Techniken:

[Eigenes HTML im WebBrowser einfügen]
http://dzaebel.net/MshtmlTab.htm

[MSHTML ohne WebBrowser als Parser benutzen]
http://dzaebel.net/MshtmlParser.htm


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Renè Walther

unread,
Dec 25, 2009, 5:18:39 AM12/25/09
to
Am Thu, 24 Dec 2009 18:02:20 +0100, Frank Dzaebel schrieb:

>> Kann mir mal jemand helfen? Hab hier Webbrowser-Control in dem icke
>> eine
>> temporaere HTM-Datei im lokalen Dateisystem öffne. Dem Webbrowser
>> moechte ich ein ContextMenu verpassen in dem versch. Actions, je nach
>> dem, ob was im Webbrowser ausgewählt ist nutzbar sein
>> sollen.
>
> Geht zum Beispiel über DHTML:
>
> [Custom Context Menus, Print from Script, Great Dialogs]
> http://msdn.microsoft.com/en-us/library/bb264003.aspx
>
> [oncontextmenu Event (A, ADDRESS, APPLET, ...)]
> http://msdn.microsoft.com/en-us/library/ms536914.aspx
>
> oder gleich persistent erweitert:
>
> [Link mit Titel in die Zwischenablage] http://dzaebel.net/LinkTitle.htm

Aha, verstehe. Da hab ich am falschen Ende probiert. Das ich das in der
Registry umsetzen muß war mir unklar.

> Wenn ein eigenes WinForm-ContextMenuStrip gebunden (bzw. mit dem des
> HTML-DOM ersetzt) werden soll, dann zum Beispiel:
>
> WebBrowser wb = new WebBrowser();
>
> private void Form1_Load(object sender, EventArgs e) {
> wb.Dock = DockStyle.Fill; Controls.Add(wb); Uri uri;
> Uri.TryCreate(Path.Combine(Application.StartupPath,
> "HTMLPage1.htm"), UriKind.Absolute, out uri);
> wb.DocumentCompleted +=
> new WebBrowserDocumentCompletedEventHandler(
> wb_DocumentCompleted);
> wb.Navigate(uri);
> }
>
> void wb_DocumentCompleted(object sender,
> WebBrowserDocumentCompletedEventArgs e)
> {
> wb.Document.ContextMenuShowing +=
> new HtmlElementEventHandler(
> Document_ContextMenuShowing);
> }
>
>
> void Document_ContextMenuShowing(object sender,
> HtmlElementEventArgs e)
> {
> e.ReturnValue = false;
> contextMenuStrip1.Show(Cursor.Position);
> }

Ja so (aehnlich) hatte ich das eigentlich bisher gelöst.

>> je nachdem, was im Browser ausgewählt ist [...]
>
> das ist mehrdeutig, aber man kann über das DOM alles über "ausgewählte"
> Elemente erfahren. Das aktive ist normal: wb.Document.ActiveElement

Funktioniert hier nicht.

Nur zur Erklaerung:

Wenn ein User von meinem Programm im Webbrowser-Control mit der Maus
einen beliebigen dargestellten Text oder Texteil augewählt hat, so
moechte ich erreichen das im ContextMenu ein neuer Eintrag "Auswahl-
Quelltext anzeigen" drin steht. (Wie bei Firefox z.B.)

> Ansonsten weiterführende Techniken:
>
> [Eigenes HTML im WebBrowser einfügen] http://dzaebel.net/MshtmlTab.htm

Damit kann ich nicht wirklich was anfangen, das geht ja in die
entgegengesetzte Richtung von meinem Anliegen.

Salut, Renè

Harald M. Genauck

unread,
Dec 25, 2009, 7:51:24 AM12/25/09
to
Hallo René,

> Nur zur Erklaerung:
>
> Wenn ein User von meinem Programm im Webbrowser-Control mit der Maus
> einen beliebigen dargestellten Text oder Texteil augewählt hat, so
> moechte ich erreichen das im ContextMenu ein neuer Eintrag "Auswahl-
> Quelltext anzeigen" drin steht. (Wie bei Firefox z.B.)

Vielleicht hilft Dir das hier irgendwie weiter - da hat jemand genau
das schonmal gelöst...:

http://www.bayden.com/ietoys/
-> "HTML Source"


Viele Grüße + Frohe Weihnachten

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Hrsg. + Redaktion)

Frank Dzaebel

unread,
Dec 25, 2009, 8:01:18 AM12/25/09
to
Hallo Renè,

>>> je nachdem, was im Browser ausgewählt ist [...]
>> das ist mehrdeutig, aber man kann über das DOM alles über
>> "ausgewählte"
>> Elemente erfahren. Das aktive ist normal:
>> wb.Document.ActiveElement

> Funktioniert hier nicht. [...]

Funktioniert auch bei Dir, aber Du hast scheinbar: "Markierung"
und nicht "selektiertes Element" gemeint.
Hier ist im [Download2] aber auch eine Beispiel-Implementation
für "selektiertes HtmlElement":

[Eigenes Kontextmenü für aktives Element im WebBrowser]
http://dzaebel.net/WebBrowserContextMenu.htm

0 new messages