【发布时间】:2015-10-18 04:11:05
【问题描述】:
我目前有这个代码:
DataGrid.SelectionChanged += new SelectionChangedEventHandler(DataGrid_SelectionChanged);
private void DataGrid_SelectionChanged(object sender, EventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{
//do stuff
}
}
当数据网格中的选择发生变化时,代码会检查 Ctrl 按钮,这对于检测普通物理键的 Ctrl 键效果很好,但是当我使用屏幕键盘并按下 Ctrl 键时,它不会注册我的程序。此代码的根源在于,当您使用屏幕键盘的 Ctrl 键时,您无法 Ctrl+单击 WPF 中 Datagrid 中的行。
编辑:如果在屏幕键盘上按 ctrl,然后按“A”(全选),它似乎满足 if 条件。其他快捷键都没有(ctrl+c, ctrl + v 触发这个响应)
【问题讨论】:
-
@HansPassant 我添加了更多代码和 cmets,解释了它是如何被调用的以及我遇到这个问题的原因
-
当我尝试它时它工作得很好。 UI当然很笨拙,点击时不释放Ctrl键非常难看,也许这是问题的一部分。
-
@HansPassant 真的吗?嗯。当我在 if 语句中设置断点时,它只会在我使用键盘上的 CTRL 按钮而不是屏幕键盘上时触发。
-
好吧,你真正想做什么?检测到网格的多行被选中似乎是一种黑客行为。这不是正确的做法,我们不必猜测当然更好。
-
@HansPassant 是的,这正是正在发生的事情。我希望触摸屏上的 ctrl 也能正常工作,但事实并非如此,所以我要乱搞。不过,我不知道如何才能真正解决这个问题。
标签: c# wpf keyboard touchscreen ctrl