2009-06-10 4 views
4

Ich habe eine WPF-Anwendung in einem Microsoft Outlook 2003-Fenster eingebettet. Alles funktioniert einwandfrei, außer dass keines meiner TextBox-Steuerelemente die Rücktaste annimmt. Ich habe etwas recherchiert, und das Problem existiert nur, wenn mein Fenster ein Kind des Outlook-Fensters ist und nicht, wenn es ein anderes Fenster ist (ich habe es in Firefox eingefügt und es funktioniert gut, und wenn ich mein wpf UserControl in ein Dialogfenster lege es funktioniert auch). Dies scheint das Gegenteil Problem zu sein, dass die Menschen die Berichterstattung sind (Textbox Tasten/etc löschen/Pfeil nur zu akzeptieren), und dieser Thread war etwas informativ (wenn auch nicht mein Problem beheben): WPF TextBox not accepting Input when in ElementHost in Window FormsWPF TextBox nicht akzeptiert Löschen Schlüssel

Hier ist mein Setup: I Erstelle ein WPF UserControl, das ich dann in einen ElementHost lege. Ich lege diesen Host in ein Windows Forms-Benutzersteuerelement, das in ein anderes Forms-Benutzersteuerelement eingefügt wird, das in ein NativeWindow-Steuerelement eingefügt wird (ich habe versucht, einen Teil des UserControl-Wrapping zu entfernen, aber ohne Wirkung). Dieses native Fenster wird dann zum Kind des Outlook-Fensters und wird dort platziert, wo ich es in Outlook brauche.

Hat jemand eine Idee? Vielleicht muss ich die Windows-Nachrichten anders behandeln? Ich habe einige Nachforschungen angestellt und herausgefunden, dass Outlook eine WM_COMMAND-Nachricht erhält, wenn ich die Rücktaste drücke, aber nicht, wenn ich nichts anderes treffe. Vielleicht interpretiert es die Rücktaste als Menübeschleuniger oder so?

Danke.

Antwort

1

Ich fand einen Weg, um dies zu umgehen. Ich habe WndProc von Outlook erweitert und auf WM_COMMAND gehört. Wann immer es kam, sage ich meinem WPF-UserControl-System, die Backspace-Taste an das zur Zeit tastaturgesteuerte Steuerelement zu senden.

Ich kann WM_COMMAND nicht scheinen, um auf jedem anderen Tastendruck neben der Rücktaste zu feuern, so dass es jetzt ziemlich gut funktioniert.

+0

Vergleichen Sie aus Interesse auch den Wert des WParam oder sehen Sie nur, ob das Ereignis überhaupt auftritt? Funktioniert diese Lösung noch für Sie? :-) – traskjd

+0

Ich sende nur die Rücktaste auf WM_COMMAND, weil es gut funktioniert hat. Die Ctrl-Zs lösen jedoch auch eine Rücktaste aus, aber es ist ziemlich schwer zu bemerken, da Sie im Rückgängig-Modus sowieso Zeichen löschen. Mein Gedanke: Ich habe es funktioniert, ich muss mir andere Sorgen machen, das ist eigentlich wichtig und wurde noch nicht gelöst :) – Max