C# 如何在richtextbox控件中制作复制剪切粘贴?

C# 如何在richtextbox控件中制作复制剪切粘贴?,c#,.net,winforms,C#,.net,Winforms,我现在尝试的是richTextBox1 mouseup事件以及每个操作的事件: private void richTextBox1_MouseUp(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Right) { ContextMenu contextMenu = new Syst

我现在尝试的是richTextBox1 mouseup事件以及每个操作的事件:

private void richTextBox1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                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);

                richTextBox1.ContextMenu = contextMenu;
            }
        }

        void CutAction(object sender, EventArgs e)
        {
            richTextBox1.Cut();
        }

        void CopyAction(object sender, EventArgs e)
        {
            Clipboard.SetData(DataFormats.Rtf, richTextBox1.SelectedRtf);
            Clipboard.Clear();
        }

        void PasteAction(object sender, EventArgs e)
        {
            if (Clipboard.ContainsText(TextDataFormat.Rtf))
            {
                richTextBox1.SelectedRtf
                    = Clipboard.GetData(DataFormats.Rtf).ToString();
            }
        }
有两个问题:

  • 当我在rcihTextbox中标记文本并右键单击时,仅当我再次右键单击时,才会看到“剪切复制粘贴”菜单。为什么第一次右键单击时不显示菜单

  • 第二个问题,当我复制时,点击复制,然后我转到chrome浏览器,尝试将其粘贴为空。粘贴为空,就像它根本没有复制一样

  • 我现在又检查了一遍,只有切口起作用了。若我复制它并没有复制任何东西,我不能粘贴到顶部的Chrome地址栏。或者,如果我从chrome的exmaple复制了我搜索到的东西:hello world,那么richTextBox中的粘贴是空的


    我希望能够从richTextBox控件内部以及其他外部程序(如记事本chrome ie或其他richTextBox控件)中复制/剪切/粘贴。上下文菜单不显示,因为您在右键单击后设置了它。尝试将其设置为MouseDown事件。当您单击“复制”时,您在剪贴板中设置了文本,但在使用
    剪贴板后将其删除。Clear()
    ,因此我不知道您写这行时的想法,只需将其删除即可。

    将其移动到“鼠标向下”事件解决了右键单击问题。删除清除行解决了复制问题。但现在我只能在richTextBox1窗口内进行复制和粘贴。但我仍然无法从chrome或记事本等外部应用程序复制/粘贴richTextBox。例如,如果我键入chrome www.google.com的顶部,然后标记并复制它,我将无法将其粘贴到richTextBox1窗口。如果我标记并复制richtextbox中的文本,则无法将其粘贴到chrome的顶部。尝试在剪贴板中设置多种格式:文本、unicode文本、RTF解决了另外两个问题。在这里使用了答案: