コード内でフォーカスを完全に削除する場合(コードの「Focus();
」と反対の場合)、どうすればいいですか?フォーカスをプログラムで破棄/完全に削除する
シナリオ例:私はButtonFocusingボタンを使用していて、onclickイベントを使用して、「この要素からフォーカスを削除する」と言うだけです。
コード内でフォーカスを完全に削除する場合(コードの「Focus();
」と反対の場合)、どうすればいいですか?フォーカスをプログラムで破棄/完全に削除する
シナリオ例:私はButtonFocusingボタンを使用していて、onclickイベントを使用して、「この要素からフォーカスを削除する」と言うだけです。
希望する要素のFocusable
プロパティをfalse
に設定します。 https://msdn.microsoft.com/en-us/library/system.windows.uielement.focusable(v=vs.110).aspx
は、あなたが直接フォーカスを削除することができないかもしれないけど!私は、これは常に動作しないことがわかった...しかし、.NET Framework 4のちょうどKeyboard.ClearFocus();
では、異なるアプリケーション
[DllImport("USER32.dll")]
static extern bool SetForegroundWindow (IntPtr hWnd);
private void SwitchFocusTo(Process diffProcess)
{
SetForegroundWindow(diffProcess.MainWindowHandle);
}
にフォーカスを切り替えるので、どちらか全く別の要素にフォーカスを与えるか、このコードを試すことができます:
// 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);
別のコントロールをフォーカスするのはどうですか? – Pikoh
[WinFormsのTextBoxからフォーカスを削除するにはどうすればいいですか?](http://stackoverflow.com/questions/1140250/how-to-remove-the-focus-from-a-textbox-in-winforms) – Pikoh
私は実際にこれを以前からやっていました。「次の」コントロールに焦点を当てていましたが、これは純粋に視覚的な理由から理想的ではありませんでした(私の実際の目標はすぐに次のラインにボタンのアニメーションの流動性にバグを修正する目的))。 この問題は、次のコントロールのジッタに少し時間がかかるため、フォーカスが得られ、それに応じてアニメートされます。 理想的には、私は焦点を壊したり削除したりしたいのですが、幸いな選択肢は視覚的な問題がないので、最も近いペアレンタルコンテンツコントロール(ビューのホスト)に焦点を合わせるだけです。 – Logan