14

目标:带有复制和粘贴功能的菜单条,用户将看到快捷键。

MenuStrip 块 TextBoxes

问题:如果您有 MenuStrip 并设置了 ShortcutKeys,则菜单会“捕获”,但文本框不再“捕获”。这意味着您不能在文本框中使用 Ctrl+C / V - 只能通过右键单击。如果您删除快捷方式,则文本框可以正常工作。

这是为什么?如果我不想将条目命名为“Copy______Ctrl+C”,解决方案是什么?

示例项目:http ://www.file-upload.net/download-4098087/MenuBlocksSTRG.zip.html

MSDN is down ATM 我找到了这个链接:

4

4 回答 4

2

这应该适用于复制,您可以以同样的方式处理粘贴:

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == (Keys.Control | Keys.C) && textBox1.ContainsFocus)
        {
            Clipboard.SetText(textBox1.SelectedText);
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }
于 2012-02-09T20:41:01.693 回答
2

如果它仍然很重要,简单的解决方案可能是:仅显示快捷键文本,如图所示。

Ctrl + V

在 TextBox 中将 ShortcutsEnabled 设置为 true。就这样!

于 2017-03-19T01:47:04.083 回答
1

在这些情况下,您可能必须自己处理事情。

简单的例子:

private void copyToolStripMenuItem_Click(object sender, EventArgs e) {
  if (this.ActiveControl is TextBox) {
    Clipboard.SetText(((TextBox)this.ActiveControl).SelectedText);
  } else {
    // do your menu Edit-Copy code here
  }
}

private void pasteToolStripMenuItem_Click(object sender, EventArgs e) {
  if (this.ActiveControl is TextBox) {
    ((TextBox)this.ActiveControl).SelectedText = Clipboard.GetText();
  } else {
    // do you menu Edit-Paste code here
  }
}
于 2012-02-09T19:14:08.867 回答
0

你需要这样的东西吗?

ToolStripMenuItem Quit = new ToolStripMenuItem();
        Quit.Name = "quitToolStripMenuItem";
        Quit.Text = "&Quit";
        Quit.ShortcutKeys = Keys.Alt | Keys.F4;
        Quit.Click += new EventHandler(quitToolStripMenuItem_Click);
于 2014-01-07T18:03:44.370 回答