C# .NET - 首先释放 ctrl 时不触发 ctrl-c 键
本文关键字:ctrl-c ctrl NET 释放 | 更新日期: 2023-09-27 18:35:28
我有一个捕获KeyUp事件的DataGridView。我用它来捕获键盘副本(Ctrl-C),然后执行我自己的格式化复制的文本。当我发布"C"时,一切都可以正常工作键先,但是如果我先释放"ctrl",同时仍然按住"C",它会不会触发事件。下面是事件的代码。我是已经在复制上下文菜单项上处理它,但我知道我会有使用键盘快捷键的用户,我宁愿拥有一切按预期工作。任何想法都值得赞赏。
/// <summary>
/// Key up event handler
/// </summary>
void Control_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.C && e.Control == true )
{
CopyToClipboard(dgDS408Parameter.CurrentCell.EditedFormattedValue.ToString());
}
}
public bool CtrlPressed=false;
void Control_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.C && ctrlPressed == true )
{
CopyToClipboard(dgDS408Parameter.CurrentCell.EditedFormattedValue.ToString());
}
CtrlPressed=false;
}
void Control_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control == true )
{
CtrlPressed=true;
}
}
我把它写在我的脑海里,没有经过测试,但想法是这样的。
为什么要使用键控事件?所有其他程序在按键上都做同样的事情。将您的活动从KeyUp
更改为KeyDown
,一切都会好起来的。
我认为你写的代码有逻辑错误
e.KeyCode == Keys.C && e.Control == true
这意味着"C"和"Cnt"两个键都必须在按下状态时任何键触发键启动事件。
所以这里发生的事情是当你按 Cnt + C 时,它没问题,但是当你先释放"ctrl"时,条件是错误的
e.KeyCode == Keys.C && e.Control == true
这就是为什么您的数据不会复制到剪贴板中的原因