最简单的方法是激活KeyPreview
的形式,然后按照KeyDown
事件中的逻辑。如果您在Windows应用程序的菜单有(由例如&编辑=>复制(粘贴))
:
对另一种方法是有用的。
启用该菜单中的键盘快捷键
//
// editToolStripMenuItem
//
this.editToolStripMenuItem.DropDownItems.AddRange(new
System.Windows.Forms.ToolStripItem[] {
this.copyToolStripMenuItem,
this.pasteToolStripMenuItem});
this.editToolStripMenuItem.Text = "Edit";
//
// copyToolStripMenuItem
//
**this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)
((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));**
this.copyToolStripMenuItem.Text = "&Copy";
//
// pasteToolStripMenuItem
//
**this.pasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)
((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));**
this.pasteToolStripMenuItem.Text = "&Paste";
所以,你有你的快捷方式复制粘贴。现在管理你的菜单点击
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
Image myData = this.ActiveControl.BackgroundImage;
Clipboard.SetImage(myData);
}
private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
{
Image myData = Clipboard.GetImage();
this.ActiveControl.BackgroundImage = myData;
}
当然,如果你想不显示给用户,你可以使你的菜单隐身。
============================================== ================================= UPDATE多个控件
代码:
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
ICopyPasteable control = sender as ICopyPasteable;
if (control != null)
{
control.CopyToClipboard();
}
}
private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
{
ICopyPasteable control = sender as ICopyPasteable;
if (control != null)
{
control.PasteFromClipboard();
}
}
}
public interface ICopyPasteable
{
void CopyToClipboard();
void PasteFromClipboard();
}
public class MyTextBox : TextBox, ICopyPasteable
{
#region ICopyPasteable Membres
public void CopyToClipboard()
{
Clipboard.SetText(this.Text);
}
public void PasteFromClipboard()
{
if (Clipboard.ContainsText())
{
this.Text = Clipboard.GetText();
}
}
#endregion
}
不要也尝试* [代码。NET框架 - 剪切,复制,粘贴代码](http://www.eggheadcafe.com/software/aspnet/31867610/cut-copy-paste-code.aspx)*。 – 2009-12-02 10:26:03
* [在Windows窗体应用程序中执行“剪切”,“复制”,“粘贴”菜单命令](http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/4654a0e3-bb68-494e -a1f2-03884a72f7d6 /)*与您的问题类似。只是检查出来.. – 2009-12-02 10:24:00
谢谢,这似乎是在谈论实际使用剪贴板,我没有问题。我不知道TextBox.Copy(),但我试图得到的是一个更好的方式来复制和粘贴到自定义控件,因此他们响应键盘和菜单点击,但没有很多if语句或每个控制密钥处理代码。 – 2009-12-02 10:42:22