如何检查TextBox的光标是否闪烁

时间:2019-08-20 14:55:52

标签: c# uwp

这是针对UWP应用的。我只找到一种方法来检查TextBox是否未聚焦,但无法正常工作。我想检查TextBox是否有闪烁的光标,以便您可以在焦点丢失时(没有闪烁的光标)键入它。

    if (textBoxCool.FocusState == FocusState.Unfocused)
    {
        // Do something
    }
    else
    { 
        // Do something else
    }

2 个答案:

答案 0 :(得分:1)

TextBox具有 LostFocus GettingFocus 事件。当TextBox的光标闪烁时,它将触发GettingFocus事件,而当光标没有闪烁时,它将触发LostFoucs事件。

.xaml:

<TextBox  x:Name="textBoxCool" Width="200" LostFocus="TextBox_LostFocus" GettingFocus="TextBox_GettingFocus"></TextBox>

.cs

private void TextBox_LostFocus(object sender, RoutedEventArgs e)
        {​
            //Do something
        }​
​
private void TextBox_GettingFocus(UIElement sender, GettingFocusEventArgs args)​
        {​
            //Do something else
        }

答案 1 :(得分:0)

我认为您应该使用事件来使其正常工作。您不想使用这样的条件,因为那样您以后仍然需要一个事件来触发它。有一个名为"OnPointerEntered"的事件和另一个"OnPointerExited"的事件,您可以用它代替您的if-else语句。

https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.control.onpointerentered

https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.control.onpointerexited

如果焦点已设置为控件或已经在控件上,则焦点将返回true的布尔值,而如果控件false将焦点设为IS NOT FOCUSABLE。这意味着您不能在类似这样的条件中使用它,除非您将textBoxCool设置为在代码中其他地方无法聚焦。