如何在richtextbox控件中制作复制剪贴?

时间:2016-02-27 22:44:38

标签: c# .net winforms

我现在尝试的是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();
            }
        }

有两个问题:

  1. 当我在rcihTextbox中标记文本并右键单击时,只有当我再次右键单击时才会发生任何事情,我会看到菜单剪切复制粘贴。为什么在第一次右键单击时没有显示菜单?

  2. 第二个问题当我制作复制时点击复制然后我转到Chrome浏览器并尝试粘贴它是空的粘贴是空的,就像它根本没有复制它一样。

  3. 我现在再次检查只有Cut正在工作。如果我复制它不复制任何东西,我无法粘贴到顶部的Chrome地址栏。或者,如果我从exmaple中复制了我搜索过的东西:hello world,那么richTextBox中的Paste就是空的。

    我希望能够从richTextBox控件中自行复制/剪切/粘贴,也可以从其他外部程序(如记事本chrome,甚至其他richtextbox控件)进行复制/剪切/粘贴。

1 个答案:

答案 0 :(得分:0)

由于您在右键单击后设置了ContextMenu,因此未显示。尝试在MouseDown事件上设置它。当您单击复制时,您可以在剪贴板中设置文本,但是在使用Clipboard.Clear()后将其删除,因此我不会通过编写此行来了解您的想法,只需将其删除即可。