Autor Beitrag
relativ-egal
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 13.09.16 15:33 
Hallo zusammen,

ich habe gefühlt das ganze Netz durchsucht, aber keine Lösung für mein Problem gefunden...

Ich habe eine Art Browser nachgebastelt, indem ich zur Laufzeit Tabs in ein DraggableTabControl erzeuge, die jeweils eine EO.WebBrowser komponente beinhalten.

dieses TabControl hat die Funktion, dass beim betätigen der Tastenkombination Strg+Tab durch die Tabs geblettert wird. Das ist gut und schön und soll auch gern so bleiben (Ich könnte es aber auch manuell programmieren ... das ist nicht das Problem)

Was leider passiert ist, dass bevor die Seite gewechselt wird das Tab Event an die Browserkomponente weiter gegeben wird.. Das heißt gehen ich wieder zurück auf das erste Tab steht der Cursor im nächsten Control der angezeigten Webseite ... und das soll ganz bestimmt nicht passieren ;)

Ich habe schon einige Dinge probiert ...

Im KeyPress: e.Handled = true;
Etwas ähnliches im KeyDown:
ausblenden C#-Quelltext
1:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)					


Ich kann mir ja kaum vorstellen, dass ich der einzige bin, der dieses Problem hat.

Mit freundlichen Grüßen

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 13.09.16 15:51 
Hallo und :welcome:

hast du bei deiner Form die Eigenschaft KeyPreview gesetzt?
Dann müßten KeyPress und KeyDown/Up entsprechend funktionieren.

Edit: Falls du es nicht für die Form sondern explizit für ein Control abschalten möchtest, evtl. hilft dann das Control.PreviewKeyDown-Ereignis.


Zuletzt bearbeitet von Th69 am Di 13.09.16 15:55, insgesamt 1-mal bearbeitet
relativ-egal Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 13.09.16 15:55 
Hallo und danke ;)


KeyPreview ist True.
Das ist auch nicht das Problem. Ich kann eine Funktion Programmieren, die ebenfalls die Tabs wechselt.
Allerdings kann ich nicht verhindern, dass das Tab an das WebControl weiter gegeben wird.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 13.09.16 15:56 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 13.09.16 15:56 
Wenn der Click auf Tab nicht in ProcessCmdKey und auch nicht in ProcessTabKey ankommt hat dein EO.WebBrowser den gefressen. Und du müßtest dort schauen was passiert (Du hast nicht verraten was ein EO.WebBrowser ist).


Zitat:
Was leider passiert ist, dass bevor die Seite gewechselt wird das Tab Event an die Browserkomponente weiter gegeben wird


Nicht ganz. Deine Beobachtung ist natürlich vermutlich richtig das dahinterliegende Verhalten aber falsch beschrieben.
Die Messages innerhalb Windows (z.B. Key Events) gehen direkt an das focussierte Control und werden dann nach außen gegeben um es möglicherweise dort zentral behandeln zu können. (Der KeyPreview Mechanismus schauffelt also die Nachricht vom Control nach außen bis zur Form und eventuell wieder zurück). Wenn das Control da nicht mitspielt und denn nicht rausrückt kannst du nix machen weil die Nachricht die Form nie erreicht.
relativ-egal Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 13.09.16 16:01 
Hallo Ralf,

das Tab kommt durchaus im ProcessTabKey an, nur ist da im EO.WebBrowser alles schon passiert ;(

Der EO.WebBrowser ist eine komponente, die einen Browser emuliert .. Ähnlich wie der normale Webbrowser, allerdings verwendet der EO Chrome statt dem IE als Grundlage
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 13.09.16 16:03 
Es geht wohl um den WebBrowser von EssentialObjects (EO).
Kannst ja mal schauen, ob auch die TabbedBrowser Sample App with EO.WebBrowser das Tabbing unterstützt und genau dieselben Problem macht.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 13.09.16 17:33 
Zitat:
das Tab kommt durchaus im ProcessTabKey an, nur ist da im EO.WebBrowser alles schon passiert ;(


Dann hat das Control dummerweise erst dann Key behandelt und dann nach außen für den Preview weitergegeben. Für eine ~Preview~ Funktionalität natürlich .... sagen wir mal suboptimal.
Das Problem mußt du dann aber weiterhin im Webbrowser Control lösen normales Winforms Handling hilft nicht da es das Webbrowser Control schon nicht richtig macht.
relativ-egal Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 14.09.16 07:28 
Danke Th, das war ein guter Hinweis ... leider hat der TabbedBrowser das Problem schlecht gelöst ..
die eigentlichen Tab Buttons haben nach dem Wechsel der Seite den Focus ... Hilft also leider auch nicht weiter.


@Ralf: ich schau mal, ob ich Strg+Tab im WebControl einfach ganz unterdrücken kann ...
Das ist leider etwas aufwendig zu testen, da ich die Tabs und Browser wie gesagt zur Laufzeit erzeuge ... aber ich guck mal
relativ-egal Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 14.10.16 09:40 
Hallo zusammen,

das Problem habe ich jetzt gelöst ... es lag eigentlich nicht am Browser oder dem TabControl, sondern lediglich an der angezeigten WebSite ...

lg