WPFでUIコントロールを開発して、既存のWindows Forms/MFCアプリケーションエンジン(Rhino 3D)で使用するようにしています。WPF TextBoxはElementHostのウィンドウフォームでの入力を受け付けません
アプリケーションエンジンは、本質的にWindows FormsコントロールをEnginesインターフェイスにドックすることができる子ウィンドウ内に配置できる「Dockbar」を作成する機能を公開しています。
Dockbarに追加されたElementHostコントロール内に単純なWPF TextBoxを配置しようとしています。一見するとこれはうまくいくように見えます。 TextBoxに入力しようとすると、特定のシーケンスだけが実際にTextBoxに表示されます。 、BACKSPACE、COPY、PASTE、および選択TEXT作業を削除します。 A-Z、1-9などを入力すると、それらのキーは表示されません。
私はネットを狙っており、ElementHost.EnableModelessKeyboardInterop()
について聞いたことがありますが、これはフォームから作成されたWPF Windowsにのみ適用されます。 WPF UserControlsを作成し、ElementHostコントロールでそれらをホストしています。 keyUpイベント PreviewKeyDown、PreviewKeyUp、を
System.Windows.Threading.Dispatcher.Run();
:
は私がDispatcher.Run()の話のポストを見て、それは一種の動作しますが、フォームの残りの部分を壊します、KeyDownイベントはすべてTextBoxで発生しますが、テキストボックスにはテキストが表示されません。私はWindowsのメッセージについてよく分かりませんが、WinSpectorを使用すると、TextBoxからWM_GETTEXTメッセージが届いていないことに気付きました(わからない場合でも)。
また、新しいWindowsフォームプロジェクトを作成して同じことを行ったため、うまく動作するため、ウィンドウの作成方法とRhino 3Dエンジン内のドッキング方法に問題があります。ここで
は動作しませんサンプルコードです:
ElementHost el = new ElementHost();
System.Windows.Controls.TextBox t = new System.Windows.Controls.TextBox();
t.Width = 100;
t.Text = "TEST";
el.Child = t;
panel1.Controls.Add(el);
ありがとう、これは私が必要としていたものです。私はそれをUserControlに入れました.IvanHは以下のように提案しました。魅力的な作品! –
ありがとう!これは今日私たちのための問題として浮上し、これはすぐにそれを解決しました! –