尝试从RichTextBlock复制/粘贴图像

时间:2014-06-16 16:24:49

标签: c# winrt-xaml

如何复制/粘贴RichTextBlock(图像)? RichTextBlock中是否存在用于复制/粘贴的属性?

以下是我正在创建的示例:

<RichTextBlock x:Name="txbTermsConditions" Height="Auto" Width="319" FontSize="16">
             <Paragraph>
                 //Example of xaml... the image is from file.xml
            </Paragraph> 
</RichTextBlock>

如果我从这片Xaml中选择所有文本或图像并将其复制/粘贴到NotePad中,我就无法选择要复制/粘贴的文本或图像。

1 个答案:

答案 0 :(得分:1)

尝试使用此代码

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

如果你想复制粘贴到另一个应用程序,如记事本(文本只有样式)请替换以下方法

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