2015-11-03 3 views
0

Я создаю HTML-редактор WYSIWYG, вставив GeckoFX в приложение Windows Forms в VB.NET.
Это код:Как сделать каретку видимой в управлении 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") 

Это, как я сделать веб-страницу для редактирования:

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

Но после того, как я сделать страницу редактирования, каретка не отображается, пока не выберите страницу.
Как я могу сделать каретку видимой в точке вставки сразу после метода навигации?
Этот код не имеет видимого эффекта:

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) 

Спасибо.

+1

Возможно, это окно активно, но элемент тела не имеет фокуса. Я бы попытался получить элемент body и вызвать фокус на нем. – Tom

+0

Привет, Том. Спасибо за предложение. Увы, этот код не имеет никакого эффекта: gBrowser.Document.GetElementsByTagName ("body") (0) .Focus() – GreenBear

+1

Имеет ли фактический контроль winforms фокус (IE. GeckoWebBrowerControl) - если бы вы не могли попробовать gBrowser. Выбрать(). В добавлении другая вещь, котор нужно вызвать будет gBrowser.WebBrowserFocus.Activate(); – Tom

ответ

1

С встроенным контролем geckofx в приложении winforms важно помнить, что в игре есть два фокуса.

Для того, чтобы установить фокус Winform на управление geckofx:

gBrowser.Select(); 

Для того, чтобы установить HTML фокус внутри фокус вызова управления geckofx на HTML элемент. например, (где Тело является редактируемым элементом контента):

gBrowser.Document.Body.Focus(); 
Смежные вопросы