如果我想完全从某些内容中删除焦点(就像在代码中说" Focus();
"相反),我该如何去做呢?
示例场景:我使用键盘聚焦按钮并使用onclick事件,我只想说"从此元素中移除焦点"。
答案 0 :(得分:1)
您可以随时使用:
Keyboard.ClearFocus();
答案 1 :(得分:0)
将所需元素的Focusable
属性设置为false
。 https://msdn.microsoft.com/en-us/library/system.windows.uielement.focusable(v=vs.110).aspx
答案 2 :(得分:0)
在Windows中,一个元素总是有焦点。因此,您无法移除焦点,但您可以将其转移到其他位置。您可以将焦点设置为没有像表单本身那样的功能的东西
答案 3 :(得分:0)
在.NET Framework 4中只是Keyboard.ClearFocus();
但是我发现这并不总是有用......所以要么完全关注另一个元素,要么试试这个代码:
// 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);
答案 4 :(得分:-1)
你可能无法直接删除焦点但是!您可以将焦点切换到其他应用程序
[DllImport("USER32.dll")]
static extern bool SetForegroundWindow (IntPtr hWnd);
private void SwitchFocusTo(Process diffProcess)
{
SetForegroundWindow(diffProcess.MainWindowHandle);
}