我是 C# 新手。我正在使用以下代码在键盘上按下时检测 Ctrl+v:
while(true)
{
bool check = (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl));
if (check && Keyboard.IsKeyDown(Key.V))
{
if (Clipboard.ContainsText())
history.Dispatcher.Invoke(new invoke_method2(update2),
new object[] { Clipboard.GetText(), history });
}
}
程序在后台运行。问题是,当用户按下 Ctrl 然后按下 v 时它会起作用。但如果用户按下 v 然后按下 Ctrl,则条件也成立,这是一个不需要的触发器。有办法克服吗?
最佳答案
要在 WPF 中捕获窗口中的快捷方式,请实现 KeyDown 事件,因此无需创建新线程:
public MainWindow()
{
InitializeComponent();
KeyDown += MainWindow_KeyDown;
}
void MainWindow_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyboardDevice.Modifiers == ModifierKeys.Control)
{
if (e.Key == Key.V)
{
}
}
}
编辑:
如果您想使用您的解决方案,那么您实际上是在搜索 V 未被按下但 Ctrl 被按下的时间点,因此以下作品:
while (true)
{
if (!Keyboard.IsKeyDown(Key.V))
{
while (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{
if (Keyboard.IsKeyDown(Key.V))
{
}
}
}
}
关于c# - 如何检测用于粘贴的 control + v,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31950345/