如何在按下Enter键并失去焦点后禁用自动选项卡

时间:2019-01-11 02:52:06

标签: xaml uwp c++-cx

我在TextBox中有一个keyDownEvent的事件处理程序。现在,当我按Enter时,此事件处理程序将可见性更改为Collapsed,并且TextBox隐藏。问题在于,这显然使TextBox和foucus失去了重点。在我的应用程序中。如何禁用其他元素的自动对焦,什么也不对焦?

我尝试了以下方法,但是我真的很困惑。

if (e->Key == Windows::System::VirtualKey::Enter) {
    this->mode = ITEM_MODE::SELECT; // will Change Visibility to Collapsed
    FocusManager::TryMoveFocus(FocusNavigationDirection::None);
    e->Handled = true;          
}

感谢您的帮助! <3

2 个答案:

答案 0 :(得分:0)

  

如何在按下Enter键并失去焦点后禁用自动标签

源自官方文档,

  

UseSystemFocusVisuals用于获取或设置一个值,该值指示控件是使用系统绘制的焦点视觉效果还是控件模板中定义的焦点视觉效果。

您可以将控件UseSystemFocusVisuals的属性设置为False。那么下一个控件将不会被系统聚焦。

<StackPanel Orientation="Vertical" Name="RootLayout" IsTapEnabled="False" >
    <TextBox HorizontalAlignment="Stretch" Height="44" KeyDown="TextBox_KeyDown" />
    <Button Content="FouceElement" UseSystemFocusVisuals="False"/>
    <Button Content="NextBtn" UseSystemFocusVisuals="False"/>
</StackPanel>

答案 1 :(得分:0)

如果您只是不想让自动对焦的项目显示焦点指示符,可以将Focus的类型更改为FocusState.Pointer

示例(C#):

object focusedElement = FocusManager.GetFocusedElement();
((Control)focusedElement).Focus(FocusState.Pointer); // This will hide focus indicator