如何确定是以编程方式还是通过用户输入进行选择。
我开始写一些东西但是因为有更多的工作,我决定寻求一些开箱即用的程序或依靠社区经验。
所以这就是我写的(注意,C#中的答案也很受欢迎):
Private Shared Function IsUserSelect() As Boolean
If Mouse.LeftButton = MouseButtonState.Pressed Then Return True
Dim shift As Boolean
shift = Keyboard.IsKeyDown(Key.LeftShift)
If Not shift Then shift = Keyboard.IsKeyDown(Key.RightShift)
If shift Then
Dim arrow As Boolean
arrow = Keyboard.IsKeyDown(Key.Right)
If Not arrow Then arrow = Keyboard.IsKeyDown(Key.Left)
If arrow Then Return True
End If
Return False
End Function
在TextBox的OnSelectionChanged上调用,并确定选择是由用户还是虚拟进行。
但后来我意识到还有更多选择:Shift + Home,Shift + PageDown等等 我宁愿相信一个经过测试的功能,然后重新发明了穿刺轮 谢谢你的阅读。
答案 0 :(得分:0)
我改进了我的功能,但我仍然愿意接受这些想法:
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