問題タブ [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.

0 投票する
1 に答える
2206 参照

wpf - WindowsFormsHost から開いたときにコンテキスト メニューがキーを押しても反応しない

フォーカスが WindowsFormsHost にあり、コンテキスト メニューが開いている場合、コンテキスト メニューは上下の矢印キーを押しても反応しません。

この問題は、次の (ほぼ自己完結型の) コードで示されています。

コードビハインド:

これにより、WPF と WinForms の 2 つのテキスト ボックスが表示されます。Ctrl-T を押すと、簡単なコンテキスト メニューが表示されます。

プログラムを実行します

  1. カーソルを WPF テキスト ボックスに置きます
  2. Ctrl-T を押します: コンテキスト メニューが表示されます
  3. 下矢印キーを押す: コンテキスト メニューの最初の項目 ('aaa') が選択されます。

一方

  1. WinForms テキスト ボックスにカーソルを置きます。
  2. Ctrl-T を押します: コンテキスト メニューが表示されます
  3. 下矢印を押す: 何も起こらない

私たちのアプリケーションでは、キーボード ナビゲーションが不可欠なので、これは非常に面倒です。

説明を手伝ってくれる人はいますか?そして、できれば解決策を見つけて、2番目のケースを最初のケースとして機能させます。

(少なくともニーモニックを使用して開いた通常のメニューは正常に機能することに気付きました)。

アップデート

私が取り組んでいる実際のケースについて少し詳しく説明する必要があると思います。各 TabItem のコンテンツが別の場所で開発されている (しかし通常は複雑な) TabControl があります。私の Ctrl-T コンテキスト メニューには、タブ間をすばやく移動できるようにタブ項目のタイトルのリストが表示されます。(Visual Studio のタブの右側にあるコンボボックスを模倣しています)。

現在、現在のタブのコンテンツが WPF コントロールであり、フォーカスがコントロール内にある場合、すべて正常に動作します。コンテキスト メニューを開いて同じタブを選択すると、コンテキスト メニューが開く前の場所にフォーカスが戻ります。これは、コンテキスト メニューがフォーカス スコープであるため機能するため、論理フォーカスはコントロール内にあった場所に残ります。

ただし、コンテンツが WindowsFormHost であり、フォーカスが内部にある場合、コンテキスト メニューは上記のように機能しません。以下の最初の回答では、コンテキスト メニューを開く前にフォーカスを任意の WPF コントロールに移動することでこれを修正しています。残念ながら、これにより論理フォーカスも変更され、コンテキスト メニューを閉じた後にリセットできなくなります。

フォーカスを変更してコンテキストメニューを開く前に、フォーカスをキャプチャして保存しようとしましたが、うまくいきませんでした。

私が落ち着いた解決策は、必要な場合にのみフォーカスを変更することです。(のチェックインは機能してKeyboard.FocusedElement == nullいるようです)。これは、WinForms コンポーネントにフォーカスがあり、コンテキスト メニューを開き、タブを変更しないことを選択した場合にのみ、私のソリューションが最適ではないことを意味します。これはめったにないので、最初の問題よりも大幅に改善されています。

しかし、より良い解決策が存在するかどうかを知りたいと思っています。

0 投票する
1 に答える
507 参照

wpf - WindowsFormsHost ホワイト 初回

基本的にこれがスペース全体を占めるWPFウィンドウがあります。

このウィンドウを初めて実行ShowDialog()すると、ウィンドウは空白になります。 ここに画像の説明を入力

2 回目は、次のように表示されます。

ここに画像の説明を入力

誰かがウィンドウのレンダリングを初めて正しく行うのを手伝ってくれませんか?

このウィンドウ クラスのコンストラクタ:

呼び出すときは次のように簡単です。

0 投票する
0 に答える
11656 参照

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 へのメモ: バグを修正していただきありがとうございます...既存のコードを壊さない方法で展開していただければ幸いです。

0 投票する
0 に答える
479 参照

c# - WindowsFormsHost ToolTipService

私が抱えている問題の簡単なケースコード:


このボタンは、SetIsEnabled に渡される値を切り替えます。false の場合、Windows フォーム ホスト コントロールでホストされているものが無効になります。

この動作の説明が見つからないようです。

0 投票する
1 に答える
1452 参照

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から、これは既知の問題のようですが、パネルを表示したり隠したりするだけで、アニメーションにはあまり関心がありません。

以下は、現在の動作を説明するのに役立ついくつかの画像です。

SidePanelClosed SidePanelOpenNotDrawn SidePanelOpenAndDrawn SidePanelClosedButStillDrawn

0 投票する
2 に答える
943 参照

wpf - ホストされたWinformsコントロールで例外が発生した後、WPFアプリで実行を継続する

サードパーティのWinFormsコントロールがホストされているWindowsFormsHostを備えたWPFアプリがあります。サードパーティのWinFormsコントロールのバグが原因で、が発生することがありNullReferenceExceptionます。

ハンドラーを設定しましたDispatcherUnhandledExceptionが、そこで例外をキャッチして実行を続行することはできません。

ハンドラーでのみAppDomain.CurrentDomain.UnhandledException「キャッチ」できますが、それ以降は多くのことを実行できず、アプリケーションは単に終了します。

それから私はこれをしようとすると述べたstackoverflowの質問 (答えがあります;今それを見つけることができません)を見つけました:

(インライン)ハンドラーが呼び出されなかったため、これも役に立ちませんでした。

私は間違った方向に進んでいますか?

0 投票する
0 に答える
441 参照

wpf - WindowsFormsHost が原因で System.Windows.Forms.Button.Click イベントが発生しない

私は Windows フォーム アプリケーションを WPF に変換しており、変換の最初の部分でいくつかの winform コントロールを再利用しています。

winform コントロールをホストするために、私は WindowsFormsHost を使用していますが、Enter キーを押しても Winforms ボタンで Button.Click イベントが発生しないように見えます (ただし、マウスとスペースバーでのクリックは引き続き機能します)。

この動作を再現するには、次の操作を行います。

WindowsFormsHost にイベント ハンドラーを追加して、Enter キーが押されてボタンがフォーカスされた場合に Button.PerformClick を呼び出すことを考えていましたが、Enter キーを押してもボタン クリックが発生しない理由を見落としているように感じます。 .

0 投票する
1 に答える
1221 参照

c# - WindowsFormsHostを透過的にするにはどうすればよいですか?

System.Windows.Forms.Integration.WindowsFormsHostWPFアプリケーションで使用しています。はコントロールSystem.Windows.Forms.Integration.WindowsFormsHostの親であり、Webカメラからのライブカメラ画像を表示するためにPanelこれをレンダリングしています。Panel

エンドユーザーがユーザーインターフェイスでWebカメラを表示できないように透明にする方法を教えてください。

0 投票する
1 に答える
412 参照

.net - WindowsFormsHost コントロールの Telerik RadPanorama コントロール

私は自分が働いているWPFアプリを構築しています.RadPanoramaをスタート画面に、または「起動パッド」をアプリに使用したいと考えています。WPF 用の RadPanorama がないことを理解し、多数のスレッドを見てきました。

ただし、WindowsFormsHost に埋め込むことができない理由はありますか?

非常に簡単な小さなテストの後でうまくいくようですが、この方法で何かフィードバックがあるかどうか疑問に思っていますか? 設計時のサポートなしでは、何かが非常に「面倒」です。それを回避する方法はありますか?

0 投票する
1 に答える
2277 参照

c# - WPF:TabItem が実際に読み込まれ、レンダリングされ、完全に準備が整うのはいつですか?

私の WPF アプリケーションには、QuickTime のラッパーとして機能するクラスがあります。私が必要とするすべての特定の機能または単純化された機能を提供します。機能させるには、QuickTime の ActiveX コントロールのインスタンスを作成し、それを有効な Windows フォーム ウィンドウに配置する必要があります。私のアプリは WPF で、コンストラクターは次のように機能します。

メインウィンドウで、プレーヤーを次のように使用します。

これは、WindowsFormsHost を TabControl 内に配置するまで機能します。最初から表示されていないタブに配置したい。

これにより、奇妙な動作が発生します。VideoPlayerQTオブジェクトのコンストラクターはAxQTControl、提供された の中にを配置しようとしWindowsFormsHostますが、まだ表示されていないタブにあると、QuickTime コントロールは をスローしInvalidActiveXStateExceptionます。私は、ActiveX / COM コントロールがそれをスローすると考えています。WindowsFormsHost親タブをクリックして表示するまで、「無効な ActiveX 状態」にあると思います。

私の質問は次のとおりです。どのイベント ハンドラー (どのオブジェクト上) でプレーヤーを構築する必要がありますか? Window_Loaded が発火したときのように、最初は非アクティブな TabItem 内の WindowsFormsHost が準備ができて読み込まれたのはいつですか?