Wpf 确定用户输入(鼠标或kb)是否已物理提交选择

Wpf 确定用户输入(鼠标或kb)是否已物理提交选择,wpf,keyboard,mouse,selection,Wpf,Keyboard,Mouse,Selection,如何确定选择是通过编程方式还是通过用户输入进行的 我开始写一些东西,但因为有更多的工作,我决定寻找一些开箱即用的程序或依靠社区经验 下面是我写的(注意,C#的答案也很受欢迎): 在文本框的OnSelectionChanged中调用,并确定选择是由用户还是虚拟用户进行的 但后来我意识到还有更多的选择:Shift+Home、Shift+PageDown等等。 我宁愿相信一个经过测试的功能,也不愿重新发明穿刺轮。 感谢阅读。我改进了我的功能,但我仍然乐于接受以下想法: Private Shared R

如何确定选择是通过编程方式还是通过用户输入进行的

我开始写一些东西,但因为有更多的工作,我决定寻找一些开箱即用的程序或依靠社区经验

下面是我写的(注意,C#的答案也很受欢迎):

在文本框的OnSelectionChanged中调用,并确定选择是由用户还是虚拟用户进行的

但后来我意识到还有更多的选择:Shift+Home、Shift+PageDown等等。
我宁愿相信一个经过测试的功能,也不愿重新发明穿刺轮。

感谢阅读。

我改进了我的功能,但我仍然乐于接受以下想法:

Private Shared ReadOnly SelectionModifiers() As Key = 
     New Key() {
         Key.Left, 
         Key.Right, 
         Key.Up, 
         Key.Down, 
         Key.PageDown, 
         Key.PageUp, 
         Key.Home, 
         Key.End
     }

Private Shared Function IsUserSelect() As Boolean
    If Mouse.LeftButton = MouseButtonState.Pressed Then Return True

    If ((Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift) Then
        Return SelectionModifiers.Any(Function(key) Keyboard.IsKeyDown(key))
    End If

    Return False
End Function

我真的不认为你能区分,除非你能直接访问物理硬件接口。我的问题是,如果有人已经进行了实验并进行了测试,我不想依靠我自己,如果有现成的功能。
Private Shared ReadOnly SelectionModifiers() As Key = 
     New Key() {
         Key.Left, 
         Key.Right, 
         Key.Up, 
         Key.Down, 
         Key.PageDown, 
         Key.PageUp, 
         Key.Home, 
         Key.End
     }

Private Shared Function IsUserSelect() As Boolean
    If Mouse.LeftButton = MouseButtonState.Pressed Then Return True

    If ((Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift) Then
        Return SelectionModifiers.Any(Function(key) Keyboard.IsKeyDown(key))
    End If

    Return False
End Function