Afin de tirer parti de la capacité de correction orthographique des zones de texte WPF, j'en ai ajouté une à un contrôle utilisateur (avec l'utilisation de elementhost). Ce contrôle utilisateur est utilisé dans différentes formes de fenêtres. Mon problème actuel consiste à essayer de gérer les événements keyup à partir de cette zone de texte, mais le formulaire Windows est incapable d'obtenir un événement du contrôle. Je peux très bien accéder aux propriétés de la zone de texte (texte, longueur, etc.), mais les événements clavier ne semblent pas fonctionner.Gestion des événements du contrôle utilisateur contenant une zone de texte WPF
J'ai trouvé, cependant, que ce qui suit ramènera les événements de la zone de texte WPF:
Public Class MyUserControl
Private _elementHost As New ElementHost
Private _wpfTextbox As New System.Windows.Controls.Textbox
Private Sub MyUserControl_Load(...) Handles Me.Load
Me.Controls.Add(_elementHost)
_elementHost.Dock = DockStyle.Fill
_elementHost.Child = _wpfTextbox
Dim MyEventInfo As EventInfo
Dim MyMethodInfo As MethodInfo
MyMethodInfo = Me.GetType().GetMethod("WPFTextbox_KeyUp")
MyEventInfo = _wpfTextBox.GetType().GetEvent("PreviewKeyUp")
Dim dlg As [Delegate] = [Delegate].CreateDelegate(MyEventInfo.EventHandlerType, Me, MyMethodInfo)
MyEventInfo.AddEventHandler(_wpfTextBox, dlg)
End Sub
Public Sub WPFTextbox_KeyUp(ByVal sender As Object, ByVal e As RoutedEventArgs)
' something goes here
End Sub
End Class
Le contrôle utilisateur est maintenant en mesure de faire quelque chose après l'événement PreviewKeyUp est tiré dans la zone de texte WPF. Maintenant, je ne suis pas complètement sûr de savoir comment avoir la forme de la fenêtre contenant ce contrôle utilisateur pour travailler avec cela.