【问题标题】:How can i make copy cut paste in richtextbox control ?如何在richtextbox控件中进行复制剪切粘贴?
【发布时间】:2016-02-27 22:44:37
【问题描述】:

我现在尝试的是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 浏览器并尝试粘贴它是空的,粘贴是空的,就像它根本没有复制它一样。

我现在再次检查,只有 Cut 工作。如果我进行复制,它不会复制任何内容,并且我无法粘贴到顶部的 Chrome 地址栏中。或者,如果我从 chrome 的 exmaple 中复制了我搜索的内容:hello world,那么richTextBox 中的粘贴为空。

我希望能够从它自己的richTextBox 控件内部以及从其他外部程序(如记事本chrome ie 或什至其他richtextbox 控件)复制/剪切/粘贴。

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    ContextMenu 未显示,因为您是在右键单击后设置的。尝试在 MouseDown 事件上设置它。当您单击复制时,您在剪贴板中设置了文本,但在使用Clipboard.Clear() 之后将其删除,所以我不知道您写此行的想法是什么,只需将其删除。

    【讨论】:

    • 将其移至 mousedown 事件解决了右键单击问题。删除清除线解决了复制问题。但现在我只能在richTextBox1 窗口内进行复制和粘贴。但我仍然无法从外部应用程序(如 chrome 或记事本)复制/粘贴到richTextBox。例如,如果我在 chrome www.google.com 的顶部键入然后标记并复制它,我无法将其粘贴到richTextBox1 窗口中铬。
    • 尝试在剪贴板中设置多种格式:text、unicode text、rtf
    • 解决了另外两个问题。在这里使用了答案:stackoverflow.com/questions/18966407/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2010-12-10
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多