【问题标题】:How can I auto-format text pasted into rich textbox?如何自动格式化粘贴到富文本框中的文本?
【发布时间】:2023-03-18 17:24:02
【问题描述】:

我有一个笔记程序,用于在工作时记录案例,但是当我从其他窗口复制和粘贴数据时,它会将其粘贴到网站的格式中。是否有用于富文本框(和一般文本框)的设置,它将删除任何格式并仅将文本放入文本框中?如果不能,我是否必须使用查看剪贴板内容并将字符串发送到特定字体/大小等的方法?

【问题讨论】:

  • 您可以编写自己的方法并让它调用可能的双击事件。或者您甚至可以执行“Ctrl + V”组合按键事件。 RTB 没有删除格式的设置。当您说格式化时,您的确切意思是什么?
  • 我的意思是当你在网站上复制一些大而粗体的东西,然后将它粘贴到仍然有大粗体的表格中,我希望它是标准文本,而不是大和大胆。听起来我得想办法格式化它。
  • 就像 Magnus 下面所说的,将捕获的剪贴板保存到字符串或 Var,然后将字符串移动到您的 Richtextbox。那应该行得通。 --现在测试--
  • 那行得通。将剪贴板数据存储到字符串中,然后转移到 RTB 时,我没有遇到格式化的问题。如果您要使用该事件,并且需要有关完整方法的帮助,请询问。

标签: c# fonts textbox formatting richtextbox


【解决方案1】:

您应该能够通过指定TextDataFormat 并将其设置为Text 来获取未格式化的字符串:

var stringToPasteIn = Clipboard.GetText(TextDataFormat.Text);

或者让RichTextBox 使用其DataFormats 选项自动为您完成:

DataFormats.Format myFormat = DataFormats.GetFormat(DataFormats.Text);
richTextBox1.Paste(myFormat);

【讨论】:

  • 这会起作用,但我认为更难的问题是检测何时发生粘贴。请参阅此 SO 文章以帮助您:stackoverflow.com/questions/5618162/…
  • 我认为不需要他来检测粘贴何时发生。或者,当粘贴发生时,OP 可以简单地控制;如在richtextbox双击事件等......这就是我推荐的。
猜你喜欢
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多