14

目標:コピーアンドペーストのメニューストリップとユーザーにはショートカットキーが表示されます。

MenuStripはTextBoxをブロックします

問題:MenuStripがあり、ShortcutKeysを設定した場合、メニューによって「キャッチ」されますが、テキストボックスによってはキャッチされなくなります。これは、テキストボックスでCtrl + C/Vを使用できないことを意味します-右クリックするだけです。ショートカットを削除すると、テキストボックスは正常に機能します。

何故ですか?エントリに「Copy______Ctrl + C」という名前を付けたくない場合の解決策は何ですか?

プロジェクトの例:http ://www.file-upload.net/download-4098087/MenuBlocksSTRG.zip.html

MSDNは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 に答える
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 に答える