如何通过快捷键或右键仅复制RichTextBox选中的文本和图片并粘贴?
RichTextBox选中内容(文本+图片)的复制粘贴实现
问题核心
你之前用Clipboard.SetText(rtf.SelectedText)只能获取纯文本,是因为忽略了RichTextBox的RTF格式支持——选中的图片和带格式文本都包含在SelectedRtf属性里。
复制到剪贴板
直接操作RTF格式数据,同时兼容纯文本格式,确保其他应用也能识别:
if (rtf.SelectionLength > 0) { var dataObj = new DataObject(); // 存入RTF格式(保留图片和格式) dataObj.SetData(DataFormats.Rtf, rtf.SelectedRtf); // 存入纯文本格式(兼容普通文本框) dataObj.SetData(DataFormats.Text, rtf.SelectedText); Clipboard.SetDataObject(dataObj); }
从剪贴板粘贴
优先读取RTF格式,确保图片和格式被保留:
if (Clipboard.ContainsData(DataFormats.Rtf)) { rtf.SelectedRtf = Clipboard.GetData(DataFormats.Rtf).ToString(); } else if (Clipboard.ContainsText()) { rtf.SelectedText = Clipboard.GetText(); }
快捷键与右键菜单集成
- 快捷键:监听
KeyDown事件,判断Ctrl+C/Ctrl+V组合键,触发上述复制粘贴方法 - 右键菜单:给RichTextBox添加ContextMenuStrip,添加“复制”“粘贴”菜单项,点击事件绑定对应代码
内容的提问来源于stack exchange,提问作者Terabithia
相关产品推荐
相关产品推荐

