問題タブ [windowsformshost]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - WindowsFormsHost から開いたときにコンテキスト メニューがキーを押しても反応しない
フォーカスが WindowsFormsHost にあり、コンテキスト メニューが開いている場合、コンテキスト メニューは上下の矢印キーを押しても反応しません。
この問題は、次の (ほぼ自己完結型の) コードで示されています。
コードビハインド:
これにより、WPF と WinForms の 2 つのテキスト ボックスが表示されます。Ctrl-T を押すと、簡単なコンテキスト メニューが表示されます。
プログラムを実行します
- カーソルを WPF テキスト ボックスに置きます
- Ctrl-T を押します: コンテキスト メニューが表示されます
- 下矢印キーを押す: コンテキスト メニューの最初の項目 ('aaa') が選択されます。
一方
- WinForms テキスト ボックスにカーソルを置きます。
- Ctrl-T を押します: コンテキスト メニューが表示されます
- 下矢印を押す: 何も起こらない
私たちのアプリケーションでは、キーボード ナビゲーションが不可欠なので、これは非常に面倒です。
説明を手伝ってくれる人はいますか?そして、できれば解決策を見つけて、2番目のケースを最初のケースとして機能させます。
(少なくともニーモニックを使用して開いた通常のメニューは正常に機能することに気付きました)。
アップデート
私が取り組んでいる実際のケースについて少し詳しく説明する必要があると思います。各 TabItem のコンテンツが別の場所で開発されている (しかし通常は複雑な) TabControl があります。私の Ctrl-T コンテキスト メニューには、タブ間をすばやく移動できるようにタブ項目のタイトルのリストが表示されます。(Visual Studio のタブの右側にあるコンボボックスを模倣しています)。
現在、現在のタブのコンテンツが WPF コントロールであり、フォーカスがコントロール内にある場合、すべて正常に動作します。コンテキスト メニューを開いて同じタブを選択すると、コンテキスト メニューが開く前の場所にフォーカスが戻ります。これは、コンテキスト メニューがフォーカス スコープであるため機能するため、論理フォーカスはコントロール内にあった場所に残ります。
ただし、コンテンツが WindowsFormHost であり、フォーカスが内部にある場合、コンテキスト メニューは上記のように機能しません。以下の最初の回答では、コンテキスト メニューを開く前にフォーカスを任意の WPF コントロールに移動することでこれを修正しています。残念ながら、これにより論理フォーカスも変更され、コンテキスト メニューを閉じた後にリセットできなくなります。
フォーカスを変更してコンテキストメニューを開く前に、フォーカスをキャプチャして保存しようとしましたが、うまくいきませんでした。
私が落ち着いた解決策は、必要な場合にのみフォーカスを変更することです。(のチェックインは機能してKeyboard.FocusedElement == null
いるようです)。これは、WinForms コンポーネントにフォーカスがあり、コンテキスト メニューを開き、タブを変更しないことを選択した場合にのみ、私のソリューションが最適ではないことを意味します。これはめったにないので、最初の問題よりも大幅に改善されています。
しかし、より良い解決策が存在するかどうかを知りたいと思っています。
wpf - WindowsFormsHost ホワイト 初回
基本的にこれがスペース全体を占めるWPFウィンドウがあります。
このウィンドウを初めて実行ShowDialog()
すると、ウィンドウは空白になります。
2 回目は、次のように表示されます。
誰かがウィンドウのレンダリングを初めて正しく行うのを手伝ってくれませんか?
このウィンドウ クラスのコンストラクタ:
呼び出すときは次のように簡単です。
c# - 署名またはセキュリティ透過性がデリゲート型のものと互換性がないため、ターゲット メソッドにバインドできません
Visual Studio 2012 をインストールするだけで、デリゲートを作成しようとすると、既存のアプリケーションがクラッシュします。
アプリケーションを実行しているときにこのエラーが発生するのはなぜですか?
Visual Studio 2012 は何らかの方法で .net 4.0 WindowsFormsIntegration を更新しますか?
これを回避する方法について何か提案はありますか?
「指定されたバインド制約に一致する型 'MyWindowsFormsHost' でのコンストラクターの呼び出しで、例外がスローされました。」
内部例外あり:
署名またはセキュリティ透過性がデリゲート型のものと互換性がないため、ターゲット メソッドにバインドできません
問題のあるクラスと行:
更新: NotifyActiveateApp メソッドが WindowsFormsHost に存在しなくなったことを発見しました。私が理解していないのは、Visual Studio 2012 で .net 4.5 をインストールすると、既存の 4.0 アプリケーションにどのような影響があるかということです。
更新: これを回避するために、リフレクションを使用して NotifyActivateApp メソッドが存在するかどうかを確認しました。(存在しない場合、アプリはパッチが適用された .net バージョンで実行されています...そして、この子フォーカス コードが修正するために書かれたアクティベーション バグについて心配する必要はありません)。
Microsoft へのメモ: バグを修正していただきありがとうございます...既存のコードを壊さない方法で展開していただければ幸いです。
c# - WindowsFormsHost ToolTipService
私が抱えている問題の簡単なケースコード:
このボタンは、SetIsEnabled に渡される値を切り替えます。false の場合、Windows フォーム ホスト コントロールでホストされているものが無効になります。
この動作の説明が見つからないようです。
c# - WindowsFormsHost WPF を使用して StoryBoard の後に再描画を強制する
アニメーションの移動が終了した後に WindowsFormsHost コントロールを強制的に再描画する方法を探していますが、解決策が見つかりません。
http://bitsbobsetc.wordpress.com/2011/07/10/creating-a-sliding-panel-in-wpf/に従って、WPF アプリケーションでスライド パネルを使用する例に従いました。
この例では、基本的な wpf コントロールのみを使用しています。私のスライド パネルでは、その主要部分は WindowsFormsHost です。私が抱えている問題は、アニメーションが正常に発生することですが、ユーザーが何か他の操作を行うまで WindowsFormsHost が描画されません。メイン ウィンドウを更新すると表示されるようになります。
スライド パネルを非表示にする場合も同様です。WindowsFormsHost は引き続き表示され、ユーザーが何か他の操作を行うまで操作できます。
Animating WindowsFormsHostから、これは既知の問題のようですが、パネルを表示したり隠したりするだけで、アニメーションにはあまり関心がありません。
以下は、現在の動作を説明するのに役立ついくつかの画像です。
wpf - ホストされたWinformsコントロールで例外が発生した後、WPFアプリで実行を継続する
サードパーティのWinFormsコントロールがホストされているWindowsFormsHostを備えたWPFアプリがあります。サードパーティのWinFormsコントロールのバグが原因で、が発生することがありNullReferenceException
ます。
ハンドラーを設定しましたDispatcherUnhandledException
が、そこで例外をキャッチして実行を続行することはできません。
ハンドラーでのみAppDomain.CurrentDomain.UnhandledException
「キャッチ」できますが、それ以降は多くのことを実行できず、アプリケーションは単に終了します。
それから私はこれをしようとすると述べたstackoverflowの質問 (答えがあります;今それを見つけることができません)を見つけました:
(インライン)ハンドラーが呼び出されなかったため、これも役に立ちませんでした。
私は間違った方向に進んでいますか?
wpf - WindowsFormsHost が原因で System.Windows.Forms.Button.Click イベントが発生しない
私は Windows フォーム アプリケーションを WPF に変換しており、変換の最初の部分でいくつかの winform コントロールを再利用しています。
winform コントロールをホストするために、私は WindowsFormsHost を使用していますが、Enter キーを押しても Winforms ボタンで Button.Click イベントが発生しないように見えます (ただし、マウスとスペースバーでのクリックは引き続き機能します)。
この動作を再現するには、次の操作を行います。
WindowsFormsHost にイベント ハンドラーを追加して、Enter キーが押されてボタンがフォーカスされた場合に Button.PerformClick を呼び出すことを考えていましたが、Enter キーを押してもボタン クリックが発生しない理由を見落としているように感じます。 .
c# - WindowsFormsHostを透過的にするにはどうすればよいですか?
System.Windows.Forms.Integration.WindowsFormsHost
WPFアプリケーションで使用しています。はコントロールSystem.Windows.Forms.Integration.WindowsFormsHost
の親であり、Webカメラからのライブカメラ画像を表示するためにPanel
これをレンダリングしています。Panel
エンドユーザーがユーザーインターフェイスでWebカメラを表示できないように透明にする方法を教えてください。
.net - WindowsFormsHost コントロールの Telerik RadPanorama コントロール
私は自分が働いているWPFアプリを構築しています.RadPanoramaをスタート画面に、または「起動パッド」をアプリに使用したいと考えています。WPF 用の RadPanorama がないことを理解し、多数のスレッドを見てきました。
ただし、WindowsFormsHost に埋め込むことができない理由はありますか?
非常に簡単な小さなテストの後でうまくいくようですが、この方法で何かフィードバックがあるかどうか疑問に思っていますか? 設計時のサポートなしでは、何かが非常に「面倒」です。それを回避する方法はありますか?
c# - WPF:TabItem が実際に読み込まれ、レンダリングされ、完全に準備が整うのはいつですか?
私の WPF アプリケーションには、QuickTime のラッパーとして機能するクラスがあります。私が必要とするすべての特定の機能または単純化された機能を提供します。機能させるには、QuickTime の ActiveX コントロールのインスタンスを作成し、それを有効な Windows フォーム ウィンドウに配置する必要があります。私のアプリは WPF で、コンストラクターは次のように機能します。
メインウィンドウで、プレーヤーを次のように使用します。
これは、WindowsFormsHost を TabControl 内に配置するまで機能します。最初から表示されていないタブに配置したい。
これにより、奇妙な動作が発生します。VideoPlayerQT
オブジェクトのコンストラクターはAxQTControl
、提供された の中にを配置しようとしWindowsFormsHost
ますが、まだ表示されていないタブにあると、QuickTime コントロールは をスローしInvalidActiveXStateException
ます。私は、ActiveX / COM コントロールがそれをスローすると考えています。WindowsFormsHost
親タブをクリックして表示するまで、「無効な ActiveX 状態」にあると思います。
私の質問は次のとおりです。どのイベント ハンドラー (どのオブジェクト上) でプレーヤーを構築する必要がありますか? Window_Loaded が発火したときのように、最初は非アクティブな TabItem 内の WindowsFormsHost が準備ができて読み込まれたのはいつですか?