2017-02-28 11 views
1

コード内でフォーカスを完全に削除する場合(コードの「Focus();」と反対の場合)、どうすればいいですか?フォーカスをプログラムで破棄/完全に削除する

シナリオ例:私はButtonFocusingボタンを使用していて、onclickイベントを使用して、「この要素からフォーカスを削除する」と言うだけです。

+0

別のコントロールをフォーカスするのはどうですか? – Pikoh

+0

[WinFormsのTextBoxからフォーカスを削除するにはどうすればいいですか?](http://stackoverflow.com/questions/1140250/how-to-remove-the-focus-from-a-textbox-in-winforms) – Pikoh

+0

私は実際にこれを以前からやっていました。「次の」コントロールに焦点を当てていましたが、これは純粋に視覚的な理由から理想的ではありませんでした(私の実際の目標はすぐに次のラインにボタンのアニメーションの流動性にバグを修正する目的))。 この問題は、次のコントロールのジッタに少し時間がかかるため、フォーカスが得られ、それに応じてアニメートされます。 理想的には、私は焦点を壊したり削除したりしたいのですが、幸いな選択肢は視覚的な問題がないので、最も近いペアレンタルコンテンツコントロール(ビューのホスト)に焦点を合わせるだけです。 – Logan

答えて

1

ようがない機能を持つものにフォーカスを設定することができます

Keyboard.ClearFocus();

+0

これはこれを行った、あなたはチャンピオンです、ありがとう。 私は実際にこの指示を見ましたが、私の人生のためにそれを覚えていない可能性があります。 悲しいことに、私の質問に「あまりにも早く」答えることができたので、5分待ってから答えを確認できるようになりました。 – Logan

+1

最終的に助けてくれてうれしいです。私はここで多くの助けを受けたので、戻っていくつかを与えることはいいです。 :) – Rawns

0

ウィンドウでは、常に1つの要素にフォーカスがあります。フォーカスを削除することはできませんが、フォーカスを他のものに変更することができます。あなたは、常に使用することができ、フォーム自体

+0

私は、OPがフォーカスが集中することを避けることを指していると思います。 – bradbury9

+0

私はこれを知っています。これまで私は焦点が「破壊」されたときはいつでも、雷の棒のように私が行っている特定のビューをホストしているcontentpresenter/contentcontrolにジャンプします。これは絶対にうまくいきます。この焦点の交換は一時的なものです。 – Logan

-1

は、あなたが直接フォーカスを削除することができないかもしれないけど!私は、これは常に動作しないことがわかった...しかし、.NET Framework 4のちょうどKeyboard.ClearFocus();

では、異なるアプリケーション

[DllImport("USER32.dll")] 
static extern bool SetForegroundWindow (IntPtr hWnd); 

private void SwitchFocusTo(Process diffProcess) 
{ 
    SetForegroundWindow(diffProcess.MainWindowHandle); 
} 
0

にフォーカスを切り替えるので、どちらか全く別の要素にフォーカスを与えるか、このコードを試すことができます:

// Move to a parent that can take the focus 
FrameworkElement parent = (FrameworkElement)yourElement.Parent; 
while (parent != null && parent is IInputElement && ! ((IInputElement)parent).Focusable) 
{ 
    parent = (FrameworkElement)parent.Parent; 
} 

DependencyObject scope = FocusManager.GetFocusScope(yourElement); 
FocusManager.SetFocusedElement(scope, parent as IInputElement); 
関連する問題