Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的RichTextBox的剪切/复制/粘贴不会剪切、复制或粘贴_C#_.net_Winforms_Richtextbox_Copy Paste - Fatal编程技术网

C# 我的RichTextBox的剪切/复制/粘贴不会剪切、复制或粘贴

C# 我的RichTextBox的剪切/复制/粘贴不会剪切、复制或粘贴,c#,.net,winforms,richtextbox,copy-paste,C#,.net,Winforms,Richtextbox,Copy Paste,这是我的密码: 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,

这是我的密码:

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中标记文本后,我需要模拟鼠标右键单击以查看剪切粘贴复制菜单。 当我点击“复制”后,我无法将其粘贴到任何地方,因为没有任何东西可粘贴。我还没有测试剪切和粘贴选项,但在执行复制之后,它就不起作用了。 移除剪贴板。清除

您还可以使用RichTextBox的复制方法:

对于粘贴:

void PasteAction(object sender, EventArgs e) {
   if (Clipboard.ContainsText(TextDataFormat.Rtf)) {
      SendKeys.Send("^v");
   } 
}
移除剪贴板。清除

您还可以使用RichTextBox的复制方法:

对于粘贴:

void PasteAction(object sender, EventArgs e) {
   if (Clipboard.ContainsText(TextDataFormat.Rtf)) {
      SendKeys.Send("^v");
   } 
}
注意:windows窗体内置了将文本从richTextBox复制到剪贴板的方法。 像复制、粘贴、剪切一样,您必须首先选择要复制或剪切的文本。在我的示例中,我给出了selectall文本

在本例中,它基本上会将内容复制到剪贴板,但仍然存在重载方法。请参见这些方法的定义

注意:windows窗体内置了将文本从richTextBox复制到剪贴板的方法。 像复制、粘贴、剪切一样,您必须首先选择要复制或剪切的文本。在我的示例中,我给出了selectall文本

在本例中,它基本上会将内容复制到剪贴板,但仍然存在重载方法。请参见这些方法的定义

尝试添加toolstripbar,添加3个toolstripbuttons。这是复制、剪切和粘贴的代码

private void toolStripButton1_Click(object sender, EventArgs e)
{
    SendKeys.Send("^x");
}

private void toolStripButton2_Click(object sender, EventArgs e)
{
    SendKeys.Send("^v");
}

private void toolStripButton3_Click(object sender, EventArgs e)
{
    SendKeys.Send("^c");
}
代码直接用于剪贴板。

尝试添加toolstripbar,添加3个toolstripbuttons。这是复制、剪切和粘贴的代码

private void toolStripButton1_Click(object sender, EventArgs e)
{
    SendKeys.Send("^x");
}

private void toolStripButton2_Click(object sender, EventArgs e)
{
    SendKeys.Send("^v");
}

private void toolStripButton3_Click(object sender, EventArgs e)
{
    SendKeys.Send("^c");
}

代码直接作用于剪贴板。

多伦·穆扎尔先生,谢谢你的回答

  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;
}
}


多伦·穆扎尔先生,谢谢你的回答

  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;
}
}


调用CopyAction时,设置剪贴板,然后将其清除。我肯定你不是这个意思。@ColeJohnson是的,忽略了它。@ColeJohnson它在代码顶端和它有什么关系?如果清除剪贴板,则单击“复制”菜单项时数据已丢失,则没有任何内容可粘贴。@N4TKD这是对King King的答复,他没有注意到CopyAction方法,因此我说它位于代码块的顶部。调用CopyAction时,设置剪贴板,然后清除它。我肯定你不是这个意思。@ColeJohnson是的,忽略了它。@ColeJohnson它在代码顶端和它有什么关系?如果在单击“复制”菜单项时清除剪贴板,数据将消失,则您没有任何内容可粘贴。@N4TKD这是对King King的回复,King没有注意到CopyAction方法,因此我说它位于代码块的顶部。也请打败我吧-_-好的,它现在可以工作了,但是粘贴只在richTextBox2控件上工作。如果我想让粘贴在任何其他窗口上工作,如CG罗马、我的文本文件或其他任何地方?@DoronMuzar这有点复杂,理论上你必须检测聚焦窗口并向该窗口发送一些WM_粘贴消息。@DoronMuzar还有另一个更简单的选项,请参阅更新。也打败我吧-_-好的,它现在可以工作了,但是粘贴只在richTextBox2控件上工作。如果我想让粘贴在任何其他窗口上工作,如CG罗马、我拥有的文本文件或其他任何地方?@DoronMuzar这有点复杂,理论上你必须检测聚焦窗口并向该窗口发送WM_粘贴消息。@DoronMuzar还有一个更简单的选项,请参阅更新。
    void CutAction(object sender, EventArgs e)
    {
        richTextBox1.Cut();
    }

    void CopyAction(object sender, EventArgs e)
    {
        richTextBox1.Copy();

    }

    void PasteAction(object sender, EventArgs e)
    {`
        richTextBox1.Paste();
    }