问题描述
我有一个多行文本框,我希望每个换行符在下一行字符之前也包含一个项目符号字符和一个空格。 Chr(149)AKA hex 95与我使用的字体看起来很好。此外,第一行应该有一个项目符号,该项目符号会在添加任何文本后自动显示。
基本上,我想要一个文本框,不过是项目符号列表。我不想让用户使用斜体或其他任何内容,因此没有RichtextBox。
我可以通过简单的替换将数据加载到文本框中来处理此问题,但是我希望它能够在键入或从剪贴板粘贴时即时发生,并在每次[Enter]之后自动添加项目符号击键或粘贴带有换行符的文本,并且文本光标不会不正确地跳动。
由于我经常看到“为什么要这样做?”的答复。我将解释:用户将使用此文本框输入有关特定客户的一些简短要点,例如“门代码#1234”或“客户不喜欢大蒜”。或“一定要提起她的狗。”它几乎可以是任何东西,偶尔也可以是几句话,但是每个“点”(即使是一个段落)也应该在视觉上与众不同。我不想用空白行占用屏幕空间来分隔各段,但项目符号将使每个“入口”明显地很明显。当给定点在文本框的右侧附近结束时,这特别有价值,因此下一个点似乎不属于上一个点。
“ kinda开始工作”下面的代码,可以通过将文本光标放回键入时的位置(使用Selstart)而不是跳转到开头来进行改进,但是我还没走那么远,因为它也删除项目符号,粘贴或剪切时会产生问题。也可以通过在第一行之前添加项目符号来进行改进。这些事情很容易。
我想要一种简单的“换行=换行和子弹”算法,该算法可通过剪切,粘贴,键入,删除即时运行,我怀疑它已经存在于某个地方,但是我没有找到这样的代码。
或者,如果有一种简单的方法可以为文本框提供“自定义字体”,其中换行符实际上包括一个看起来像大点的可见字形,那也可以。
感谢您阅读我的问题。
Private Sub tbOfficeNotes_TextChanged(sender As Object,e As EventArgs) Handles tbOfficeNotes.TextChanged
Static MakingChanges As Boolean = False
If MakingChanges Then Exit Sub
Dim s As String = Replace(Replace(tbOfficeNotes.Text,vbCrLf,vbLf),vbCr,vbLf)
'The line above replaces any form of newline with LF only.
s = Replace(s,Chr(149) & " ","")
MakingChanges = True
'Avoids a recursive loop as the next line would force this event to trigger from itself.
tbOfficeNotes.Text = Replace(s,vbLf,vbCrLf & Chr(149) & " ")
MakingChanges = False
End Sub
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)