vb.net写入换行符,在使用Clipboard.SetText放发,换行符不显示。

cjqshen 2018-07-05 11:12:17
向RichTextBox1控件写入多行数据,循环体内代码如下:
RichTextBox1.Text=RichTextBox1.Text & TempString & vbcrlf
之后有个Button控件,将RichTextBox1.Text的数据写入剪切板,代码如下:
Clipboard.SetText(RichTextBox1.Text)
之后打开文本文档,ctrl+V粘贴便出现问题。
问题是Button方法RichTextBox1中显示的多行数据在文本文档中显示是单行,但手动复制RichTextBox1中的内容粘贴至文本文档却是多行,不知道问题出现在何处。保存文档后,用winhex打开文档,可以看到Clipboard.SetText方法换行处是“0A”,人工复制时是“0D0A”,想请教高手如何解决这个问题。
...全文
906 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_39938292 2019-02-27
  • 打赏
  • 举报
回复
六楼大神 检测字符是否匹配 或者直接匹配字符 给提供个方案呗
qbilbo 2018-12-26
  • 打赏
  • 举报
回复
Clipboard.SetText(RichTextBox1.Text.Replace(vbLf, vbNewLine))
goodkenneth 2018-12-26
  • 打赏
  • 举报
回复
都答非所问。。

题主问的是 Clipboard.SetText()这个方法。

会把本应该是多行的数据。。 粘贴了来 全挤在了一行。分行符不见了。 (这里的分行符 不是自己用的。是复制来的文本里的)
  • 打赏
  • 举报
回复
不要使用“vbcrlf”,而是使用“System.Environment.NewLine”就可以根据系统需求自动切换实际的char,也不要随便使用Chr(10)或13.
李雪鹏 2018-08-20
  • 打赏
  • 举报
回复
说实话,我被楼主绕来绕去的描述绕晕了也没有完全明白你想表达什么意思。
但我大概了解到,你所遇到的问题是RichTextBox换行的问题。

我给你看一段解释,你即可解决问题。


vbCrLf=Chr(13) + Chr(10)'回车/换行组合符。
vbCr=Chr(13)'回车符。
vbLf=Chr(10)’换行符。
lalawo72 2018-07-23
  • 打赏
  • 举报
回复
Button控件代码
RichTextBox1.SelectAll()
RichTextBox1.Copy()
http://blog.sina.com.cn/s/blog_4cd4ffc401018xbx.html vb编写双色球号码生成小程序源码 需要3个label,用来显示相应信息;两个文本框,一个显示生成的号码,一个用来设置号码数量;两个按钮,一个用来开始生成,一个用来复制生成的号码。完整代码如下: '首先声明一个生成号码的函数用于调用 Sub 生成() 'vb的函数名称可以用汉字的,呵呵 Dim n(1 To 33), i, j, q, p '定义变量 For i = 1 To 33 n(i) = 0 Next j = 0 Randomize Timer '防止随机数重复 While j < 6 '生成6个红球号码 q = Int(Rnd(1) * 33 + 1) '红球号码为01到33 If q < 10 Then '判断是否是小于10 q = 0 & q '小于10则在前面加0 End If If n(q) = 0 Then Text1.Text = Text1.Text & q & " " '生成后写入文本框,各球中间用1个空格隔开 n(q) = 1 j = j + 1 End If Wend '红球已经生成完毕了,下面是蓝球,同红球 Randomize Timer p = Int(Rnd(1) * 16 + 1) If p < 10 Then '判断是否是小于10 p = 0 & p '小于10则在前面加0 End If Text1.Text = Text1.Text & " " & p & vbCrLf '红球和蓝球联合起来,用两个空格隔开,末尾加上换行符,以便于生成多个号码 End Sub Private Sub Command1_Click() '使用Clipboard来实现复制到剪贴板功能 Clipboard.Clear Clipboard.SetText Text1.Text End Sub Private Sub Command2_Click() '我们在界面加上一个显示生成时间的小东西 Dim s, t, k s = Timer '开始生成 Text1.Text = "" '先清空文本框 k = 0 While k < Val(Text2.Text) '按照需要来生成所需数量的号码 Call 生成 k = k + 1 Wend t = Timer '生成结束 Label2.Caption = "用时" & t - s & "秒" '显示生成时间 End Sub Private Sub Form_Load() '在load里面设置一下文本框内容 Text1.Text = "" Text2.Text = 5 End Sub

16,719

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧