【发布时间】:2017-07-30 03:14:15
【问题描述】:
这是我的代码:
void CutAction(object sender, EventArgs e)
{
richTextBox2.Cut();
}
void CopyAction(object sender, EventArgs e)
{
Clipboard.SetData(DataFormats.Rtf, richTextBox2.SelectedRtf);
Clipboard.Clear();
}
void PasteAction(object sender, EventArgs e)
{
if (Clipboard.ContainsText(TextDataFormat.Rtf))
{
richTextBox2.SelectedRtf
= Clipboard.GetData(DataFormats.Rtf).ToString();
}
}
private void richTextBox2_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{ //click event
//MessageBox.Show("you got it!");
ContextMenu contextMenu = new System.Windows.Forms.ContextMenu();
MenuItem menuItem = new MenuItem("Cut");
menuItem.Click += new EventHandler(CutAction);
contextMenu.MenuItems.Add(menuItem);
menuItem = new MenuItem("Copy");
menuItem.Click += new EventHandler(CopyAction);
contextMenu.MenuItems.Add(menuItem);
menuItem = new MenuItem("Paste");
menuItem.Click += new EventHandler(PasteAction);
contextMenu.MenuItems.Add(menuItem);
richTextBox2.ContextMenu = contextMenu;
}
}
我有两个问题:
- 标记
richTextbox2中的文字后,我需要模拟鼠标右键单击才能看到剪切粘贴复制菜单。 - 当我单击“复制”后,我无法将其粘贴到任何地方,因为没有可粘贴的内容。我还没有测试剪切和粘贴选项,但复制后它不起作用。
【问题讨论】:
-
当
CopyAction被调用时,你设置剪贴板然后清除它。我确定这不是你的意思。 -
@ColeJohnson 是的,忽略了它。
-
@ColeJohnson “它位于代码的顶部”与它有什么关系?如果您清除剪贴板,则单击“复制”菜单项时数据消失了,那么您就没有什么可粘贴的了。
-
@N4TKD 是给King King 的回复,他没有注意到
CopyAction方法,所以我说它在代码块的顶部。
标签: c# .net winforms richtextbox copy-paste