c# - 如何检测用于粘贴的 control + v

标签 c# wpf

我是 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/

相关文章:

c# - 对使用 OrderBy 的 linq 查询进行分页

C# 3.0 使用 MemoryStream 将 itextsharp pdf 保存到数据库

c# - 如何在加载列表框时选择第一个项目

c# - 使用 CaSTLe.Windsor 和 Polly 响应 429 异常( throttle )

WPF 图像源与 StringFormat 绑定(bind)

.net - 是否有任何标准方法来报告桌面应用程序中的错误?

c# - 何时需要在桌面应用程序中使用 Azure AD 进行交互式身份验证

c# - 在运行时更改自动宽度

C# WPF 如何从字节数组加载 FontFamily?

c# - 如何设置 SMO ScriptingOptions 以保证表的精确副本?