問題タブ [focus]

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 投票する
4 に答える
1951 参照

wpf - WPFフォーカスをデバッグする良い方法はありますか?

私は今、私の WPF アプリケーションで地獄に焦点を当てるつもりです。フォーカスが要素間を飛び回っており、タブ キーを繰り返し押すと、一見消えて別の要素が表示されます。

ラベルをバインドできるプロパティ、またはその時点でキーボードのフォーカスが何にラッチされているかを単に教えてくれるものはありますか? 何かにフォーカスがあることを示すアリの軌跡 (点線) が表示されることがありますが、キーボード フォーカスをオフにするために周囲に何があるかわかりません。

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

c# - WPF フォーカスの問題

コントロールの LostFocus イベントを処理するコードがあります。値を検証し、場合によっては後続のコントロールを有効にします。たとえば、ユーザーが国を選択できる ComboBox があるとします。後続の ComboBox により、ユーザーは状態を選択できます。現在選択されている国が米国でない場合、州の ComboBox は無効になります。ユーザーが "USA" を選択し、タブでコンボ ボックスから出ると、LostFocus コードは状態 ComboBox を有効にします。ただし、State ComboBox はフォーカスを取得せず、State ComboBox に続くコントロールにフォーカスが移動します。

代わりに PreviewLostKeyboardFocus を使用してイベントを処理しようとしましたが、うまくいきませんでした。この仕事を得るためにWPFをハックする方法を考え出すことについて、私はちょっと途方に暮れています。助言がありますか?

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

javascript - Vista の IE8 で Javascript の blur() コマンドが機能しない

ユーザーへのメッセージを含むウィンドウをポップアップするプロジェクトがあります。10 秒間表示された後、javascriptself.blur()コマンドを使用してバックグラウンドに送信されます。ユーザーが見る必要があるかもしれない情報が含まれているので、閉じたくありません。

これは現在、Windows XP の IE7/IE8/FF2/FF3 では機能しますが、Vista では IE8 では機能しません。Vista で IE8 の「保護モード」を無効にすると、blur()コマンドが機能し、ウィンドウが正しく親ウィンドウにフォーカスを戻すことがわかりました。

これがなぜ起こっているのか、それを回避するために何ができるのかを正確に知っている人はいますか? どんな助けでも大歓迎です!

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

c# - フォーカスされていないアプリケーションのアクティブな ChildWindow を取得するには?

実行中の特定のアプリケーションの子ウィンドウに Handler を取得する必要があります。メイン ウィンドウ ハンドラはありますが、SendMessage/PostMessage を使用するには、アクティブな特定の子ウィンドウを知る必要があります。

私は最終的に、Firefoxを使用して、次のコードを使用してこれを行うことができました:

これはとてもうまくいきます!ただし、アプリケーションがアクティブでない場合 (たとえば、メモ帳が Firefox をカバーしている場合)、GUIThreadInfo にはすべてのメンバーが null になります。Firefox が Windows の最上位 (アクティブ) アプリケーションである場合にのみ、構造が満たされます。

Firefox をフォアグラウンドにすることでこれを修正できることはわかっていますが、これを避ける必要がありました。Windows の一番上のウィンドウではないアプリケーションのアクティブな子ウィンドウを取得する他のアイデアはありますか?

ありがとう

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

javascript - Firefox 3 ウィンドウのフォーカスとぼかし

$(window).blur(function(){ windowFocus = false; }).focus(function(){ windowFocus = true; });

問題は、Firefox 3 で新しいタブを作成したときに、windowFocus が失われないことです。ff2のように、ie7は負けます。ff3 では、別のプログラムを選択したときにのみウィンドウ フォーカスが失われます。

誰でもこの問題の解決策を持っていますか?

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

wpf - ジャーナリングを元に戻す:元にされるコントロールに焦点を合わせる

WPFデータ入力画面の取り消しジャーナルを作成しています。このジャーナルは、すべてのコントロールにわたる変更を追跡します。ユーザーが[元に戻す]を選択したときに、最新の変更を元に戻すだけでなく、値が元に戻されるコントロールにフォーカスを戻したいと思います。私はその焦点を元に戻すための最良の方法に苦労しています。

私のViewModelは、元にされるジャーナリングを処理する部分になります。ViewModelのプロパティセッターは、DataModelを更新する前に「前」の状態をキャプチャします。どういうわけか、その「前」の状態には、後でフォーカスを戻すことができるように十分な情報を含める必要があります。

説明のために、住所と都市の2つのデータ入力フィールドがあるとします。ViewModelにはそれぞれのプロパティがあり、Viewには対応するViewModelプロパティにバインドされたそれぞれのTextBoxがあります。

ユーザーが[住所]フィールドに値を入力し、[都市]フィールドをクリックした例を見てみましょう。デフォルトのUpdateSourceTrigger.LostFocus動作を使用しているため、アドレステキストボックスがフォーカスを失ったときにアドレス変更が保存されます。これまでのところ、これにアプローチする方法について3つの異なるアイデアがありますが、それらのいずれかを機能させる方法を知るためのWPFについての十分な詳細がわかりません。

  1. MVVMスタイルのデータバインディングを忘れて、編集コントロールのLostFocusイベントをフックする(または、アタッチされた動作を追加するか、TextBoxをラップするカスタムコントロールを作成するなど)ことができます。LostFocusイベントハンドラーで、イベントの送信者への参照を含む元に戻るフレームを作成できます。後で、元に戻す後、参照を保存したコントロールにフォーカスします。これはおそらくWinFormsで行ったことですが、WPFでは、ViewModelパターンに固執したいと思います。他に何もない場合でもテストしやすいように、ジャーナルロジックをViewよりもViewModelに配置したいと思います。したがって、このオプションは私の最初の選択肢ではありません。

  2. 私のViewModelのプロパティセッターでは、設定されているViewModelプロパティの名前(この例では「Address」)をキャプチャし、その名前を元にたりフレームに保存できます。後で、元に戻すで、ビュー内のすべてのコントロールを繰り返し処理して、Addressという名前のプロパティにバインドされているものがある最初のコントロールを探すことができました。そのようなコントロールを見つけたらすぐに焦点を合わせます。同じViewModelプロパティに複数のコントロールがバインドされているとは思わないので、これで十分です。問題は、これにはバインディング式を掘り下げる必要があるということです。これは、私には方法がわかりません。(また、リファクタリングすると壊れてしまう可能性のある、より多くの名前ベースの遅延バインディングが導入されます。)

  3. 私のViewModelが変更を元に戻るスタックに追加すると、(インターフェイスを介して)Viewレイヤーに、どのコントロールにフォーカスがあるかを認識しているMementoを作成するように要求できます。Undoで、ジャーナルはViewにそのMementoを復元するように要求します。ここでの問題は、ViewModelのプロパティが設定され、元に戻るフレームを追加するまでに、キーボードのフォーカスがすでにCity TextBoxに移動しているため、「mementoの作成」は「どこにあるか」よりも難しい必要があることです。現在のキーボードフォーカスは今」であり、そのトリックを達成する方法がわかりません。

上記のいずれかを機能させるための提案がありますか、またはよりうまく機能する可能性のある代替アプローチがありますか?

0 投票する
7 に答える
15819 参照

c# - C# の新しいフォームがフォーカスされない

独自のオプション ウィンドウを備えた小さなアプリを作成しようとしています。ウィンドウを起動しようとすると、新しいフォームにフォーカスを設定できないようです。これは MDI フォームではなく、ユーザーがメニューからオプションを選択したときに作成する単なる新しいフォームです。Form.Show は false を返すことに注意してください。これは、新しいフォームがフォーカスを受けていないことを意味します。

フォームをロードするために複数の方法を試しましたが、すべて失敗しました:

通話フォームから:

フォーム自体の内部:

フォームを選択可能に設定:

古い API の使用:

親を渡す

これらのすべてのケースで、フォームは表示されますが、生成されたフォームはまだ新しいフォームにフォーカスがあります。これは、新しいフォームを作成する前に古いフォームを無効にしても発生します。

助言がありますか?

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

delphi - Delphi: TOleControl は ActiveControl を間違った状態にしますか?

Mike Lischke のVirtual Treeviewには、同じフォームでTWebBrowserコントロールを使用する際のバグを修正するための回避策コードが追加されています。

問題は、ユーザーが( TWebBrowserが派生する) TOleControlと対話しようとすると、最初のマウス クリックが食べられることでした。コントロールにフォーカスを与えるには、もう一度クリックする必要があります。次に、コントロールを操作できます。

彼は説明するコメントを持っています:

から派生したすべてのコントロールにTOleControlは、潜在的にフォーカスの問題があります。

クラスのテストを可能にするOleCtrlsユニット (特に、 Variantを含む) を含めることを避けるために、インターフェースがテストに使用されます。TOleControlIOleClientSiteTOleControl

完全なスニピットから:

問題は、回避策が機能しなくなったことです。正直なところ、問題が実際に何であったのか、彼のソリューションがどのようにそれを修正したのか、私にはわかりません。

彼のコメントが彼の言っていることを理解していることを知っていて、問題が何であるかを説明でき、彼がしていることはそれをどのように修正することになっていたかを知っている人はいますか?

ラップされた非 VCL コントロール (TWebBrowser など) の回避策。これらは VCL メカニズムを使用せず、ActiveControl プロパティを間違った状態のままにして、コントロールが再びフォーカスされるときに問題を引き起こします。TOleControl から派生したすべてのコントロールには、潜在的にフォーカスの問題があります。

コードは意図した範囲に到達しています

ステートメントですが、それはうまくいきません。

私はそれを修正したいと思いますが、彼がどのようにしてそれを見つけたのか、またはTOleControlが「VCL メカニズムを使用せず、ActiveControl プロパティを間違った状態のままにする」ことがどのように発生するのかわかりません。


ボーナスリーディング

私はもともと2008年ニュースグループでこの質問をしましたborland.public.delphi.nativeapi.win32

Soft-Gems フォーラムに関する質問

バンプ 20110515 (12 か月後)

バンプ 20150401 (7 年後): まだ XE6 で動作しない

バンプ 20210309 (11 年後)

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

mfc - ボタン フォーカスの取得 - MFC

VC++ MFC ダイアログ アプリケーションがあり、OnTimer 関数で、ダイアログのどのボタンに現在フォーカスがあるかを判断しようとしています。

ここに私が達成しようとしていることのいくつかの疑似コードがあります....

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

textbox - ユーザーがC#を使用してWebサイトのテキストボックスにフォーカスを設定したときに設定コマンドをトリガーする方法

Web ページにユーザー名のテキスト ボックスとパスワードのテキスト ボックスがあります。

ユーザー名テキストボックスがフォーカスを失ったら/ユーザーがパスワードテキストボックスをクリックしたときに次のコードを読み取るようにしますか? パスワードテキストボックスにパスワードが自動的に表示されるようにします。

フォーカスは私が見つけた唯一のものです。似ていることは知っていますが、理解できないようです。

ありがとう、