2015-11-03 2 views
0

Je crée un éditeur HTML WYSIWYG en intégrant GeckoFX dans une application Windows Forms dans VB.NET.
Voici le code:Comment rendre visible le contrôle GeckoFX?

Imports Gecko 
... 
Gecko.Xpcom.Initialize("C:\Program Files (x86)\XULrunner-33.0") 
... 
Dim gBrowser As New GeckoWebBrowser 
TabControl1.SelectedTab.Controls.Add(gBrowser) 
gBrowser.Dock = DockStyle.Fill 
gBrowser.Navigate("about:blank") 

Voici comment je fais la page Web modifiable:

gBrowser.Navigate("javascript:void(document.body.contentEditable='true')") 

Mais après que je fais la page modifiable, le caret ne se présente pas jusqu'à ce que je clique sur la page.
Comment puis-je rendre le signe visible à un point d'insertion juste après la méthode Navigate?
Ce code n'a pas d'effet visible:

gBrowser.SetInputFocus() 
Dim fm As nsIFocusManager 
fm = Xpcom.GetService(Of nsIFocusManager)("@mozilla.org/focus-manager;1") 
fm = Xpcom.QueryInterface(Of nsIFocusManager)(fm) 
fm.MoveCaretToFocus(gBrowser.Window.DomWindow) 

Merci.

+1

Il se peut que la fenêtre soit active mais que l'élément de corps n'ait pas de focus. J'essaierais de mettre l'accent sur l'élément body et l'appel. – Tom

+0

Salut, Tom. Merci pour la suggestion. Hélas, ce code n'a aucun effet non plus: gBrowser.Document.GetElementsByTagName ("body") (0) .Focus() – GreenBear

+1

Est-ce que le contrôle winforms actuel a le focus (IE le GeckoWebBrowerControl) - sinon vous pourriez essayer gBrowser. Sélectionner(). En outre, une autre chose à appeler est gBrowser.WebBrowserFocus.Activate(); – Tom

Répondre

1

Avec un contrôle geckofx intégré dans une application winforms, il est important de se rappeler qu'il y a deux objectifs en jeu.

Afin de mettre l'accent sur le winform contrôle geckofx:

gBrowser.Select(); 

Afin de mettre l'accent html à l'intérieur de la mise au point d'appel de commande de geckofx sur un élément html. par exemple (où Body est un élément modifiable de contenu):

gBrowser.Document.Body.Focus();