Enable copy, cut, past window in a rich text box

前端 未结 7 1446
礼貌的吻别
礼貌的吻别 2021-01-31 09:30

I have a rich text box(richTextBox1) in my program as shown bellow. But when I right click on it, it doesn\'t pop up a “copy, cut, past” window. Can you please tell

7条回答
  •  半阙折子戏
    2021-01-31 09:40

    Try with this code

    UPDATED CODE:

            private void richTextBox1_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);
    
                    richTextBox1.ContextMenu = contextMenu;
                }
            }
            void CutAction(object sender, EventArgs e)
            {
                richTextBox1.Cut();
            }
    
            void CopyAction(object sender, EventArgs e)
            {
                Graphics objGraphics;
                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();
                }
            } 
    

    if you want to copy paste with another application like notepad (without styles ) please replace following methods

           void CopyAction(object sender, EventArgs e)
            {
                Clipboard.SetText(richTextBox1.SelectedText);
            }
    
            void PasteAction(object sender, EventArgs e)
            {
                if (Clipboard.ContainsText())
                {
                    richTextBox1.Text
                        += Clipboard.GetText(TextDataFormat.Text).ToString();
                }
            }  
    

提交回复
热议问题