Ярлыки Ctrl + C Ctrl + V не работают в текстовых полях, если для MenuStrip установлены эти ярлыки - PullRequest
12 голосов
/ 08 февраля 2012

Цель: Menustrip с копированием и вставкой, и пользователь должен увидеть сочетания клавиш.

MenuStrip blocks TextBoxes

Проблема: если у вас есть MenuStrip и установлены горячие клавиши, они «захватываются» меню, но больше не текстовыми полями. Это означает, что вы не можете использовать Ctrl + C / V в текстовых полях - только правой кнопкой мыши. Если вы удалите ярлыки, текстовые поля будут работать нормально.

Почему это? Какое решение, если я не хочу называть запись "Copy ______ Ctrl + C"?

Пример проекта: http://www.file -upload.net / download-4098087 / MenuBlocksSTRG.zip.html

MSDN не работает. Я нашел следующие ссылки:

Ответы [ 4 ]

2 голосов
/ 10 февраля 2012

Это должно работать для копирования, и вы можете позаботиться о вставке таким же образом:

    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);
    }
1 голос
/ 19 марта 2017

Если это все еще имеет значение, простое решение может быть таким: Показать только текст сочетаний клавиш, как на изображении.

Ctrl + V

В TextBox установите для ShortcutsEnabled значение true.Вот и все!

1 голос
/ 09 февраля 2012

В этих случаях вам, вероятно, придется самим разобраться.

Простой пример:

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
  }
}
0 голосов
/ 07 января 2014

Вам нужно что-то подобное?

ToolStripMenuItem Quit = new ToolStripMenuItem();
        Quit.Name = "quitToolStripMenuItem";
        Quit.Text = "&Quit";
        Quit.ShortcutKeys = Keys.Alt | Keys.F4;
        Quit.Click += new EventHandler(quitToolStripMenuItem_Click);
...