【问题标题】:DataGridViewCell trap CTRL+Up or CTRL+DownDataGridViewCell 陷阱 CTRL+Up 或 CTRL+Down
【发布时间】:2015-10-07 15:57:25
【问题描述】:

C# 表单有一个datagridview。当 CTRL+UP 箭头或 CTRL+Down 箭头在 cell 处于编辑模式。

不确定要处理哪个事件以及应该如何处理。

【问题讨论】:

  • 使用 DataGridView KeyPress 事件。从 DataGridView.CurrentCell 中获取编辑后的单元格。
  • 在 KeyPress 事件中测试按键: if (((Control.ModifierKeys & Keys.Control) == Keys.Control) && e.KeyChar == Keys.Up) ...跨度>
  • 你懂的 Graffito。谢谢。我会给你一个 +1,但还没有足够的声望给你这样做..

标签: c# event-handling datagridviewtextboxcell editmode


【解决方案1】:

像这样处理DataGridViewKeyUp 事件:

private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.Control && e.KeyCode == Keys.Up)
        MessageBox.Show(string.Format("Ctrl+{0}",e.KeyCode.ToString()));
    else if (e.Control && e.KeyCode == Keys.Down)
        MessageBox.Show(string.Format("Ctrl+{0}", e.KeyCode.ToString()));
}

添加我实际运行代码时得到的打印屏幕:

来自 MSDN:

条件与运算符 (&&) 对其布尔值执行逻辑与 操作数,但仅在必要时评估其第二个操作数。

https://msdn.microsoft.com/en-us/library/2a723cdk%28v=vs.140%29.aspx

& 运算符可以用作一元或二元运算符。

https://msdn.microsoft.com/en-us/library/sbf85k1c%28v=vs.140%29.aspx

因为在我的代码中两个操作数都是bool,所以&& 是首选选项,尽管我使用& 进行了测试,并且效果也很好。此外,&& 效率更高,因为它仅在必要时测试第二个操作数。

【讨论】:

  • 我为我发布的代码添加了一个打印屏幕,该代码在按下 CTRL+UP 时显示消息框。
  • @Rob 你真的测试过代码吗?我重复了测试,效果很好。
  • @Rob 我还为选择 && 运算符而不是 & 运算符添加了解释。
  • 过失。我将您的答案与涂鸦的答案混淆了。我已经删除了我的评论,并会给你打勾。
猜你喜欢
  • 2016-06-26
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多