Ярлыки Ctrl + C Ctrl + V не работают в текстовых блоках, если в MenuStrip установлено это сочетание ярлыков
Цель: Menustrip с копией и вставкой, и пользователь увидит ярлыки.
![MenuStrip blocks TextBoxes]()
Проблема. Если у вас есть MenuStrip и установите ShortcutKeys, они "зацепились" за Меню, но больше не находятся в текстовых блоках. Это означает, что вы не можете использовать Ctrl + C/V в текстовых блоках - только нажатием правой кнопки мыши. Если вы удалите ярлыки, текстовые поля будут работать нормально.
Почему? Какое решение, если я не хочу называть запись "Копировать ______ Ctrl + C"?
Пример проекта: http://www.file-upload.net/download-4098087/MenuBlocksSTRG.zip.html
MSDN отключен, я нашел ссылки:
Ответы
Ответ 1
Это должно работать для копирования, и вы можете позаботиться о вставке таким же образом:
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);
}
Ответ 2
Вероятно, вам придется самим обрабатывать вещи в этих случаях.
Простой пример:
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
}
}
Ответ 3
Вам нужно что-то вроде этого?
ToolStripMenuItem Quit = new ToolStripMenuItem();
Quit.Name = "quitToolStripMenuItem";
Quit.Text = "&Quit";
Quit.ShortcutKeys = Keys.Alt | Keys.F4;
Quit.Click += new EventHandler(quitToolStripMenuItem_Click);
Ответ 4
Если это все еще имеет значение, простым решением может быть:
Покажите только текст сочетания клавиш, как на изображении.
![Ctrl + V]()
В TextBox установите ShortcutsEnabled в значение true. Это все!