(如在「Focus();
」代碼說法相反),我將如何去這樣做呢?銷燬/如果我想只是刪除焦點從東西完全徹底移除焦點編程
示例場景:我KeyboardFocusing一個按鈕,使用onclick事件,我只想說:「移除焦點從此元素」。
(如在「Focus();
」代碼說法相反),我將如何去這樣做呢?銷燬/如果我想只是刪除焦點從東西完全徹底移除焦點編程
示例場景:我KeyboardFocusing一個按鈕,使用onclick事件,我只想說:「移除焦點從此元素」。
所需元件(一個或多個)上Focusable
屬性設置爲false
。 https://msdn.microsoft.com/en-us/library/system.windows.uielement.focusable(v=vs.110).aspx
你可能無法直接刪除焦點,但!你可以將焦點切換到不同的應用程序
[DllImport("USER32.dll")]
static extern bool SetForegroundWindow (IntPtr hWnd);
private void SwitchFocusTo(Process diffProcess)
{
SetForegroundWindow(diffProcess.MainWindowHandle);
}
在.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);
約對焦另一個控制是什麼? – Pikoh
[如何從WinForms中的TextBox中移除焦點?](http://stackoverflow.com/questions/1140250/how-to-remove-the-focus-from-a-textbox-in-winforms) – Pikoh
我之前實際上是在做這個 - 我將重點放在'下一個'控件上,但是這對於純粹的視覺原因並不理想(我的實際目標是立即將按鈕再次聚焦在下一行上(這全部是爲了修復按鈕的動畫流動性中的錯誤的目的))。 與此相關的問題是下一個控件稍微抖動,因爲它在短時間內會相應地獲得焦點和動畫。 理想情況下,我希望重點被摧毀/刪除,但一個快樂的替代方案將只是聚焦最近的父母contentcontrol(視圖的主機),因爲這將不會有任何視覺問題。 – Logan