Winforms 标准多行文本框,希望每一行都自动添加项目符号

Winforms 标准多行文本框,希望每一行都自动添加项目符号,winforms,textbox,Winforms,Textbox,我有一个多行文本框,我希望每一个换行符在下一行字符前都包含一个项目符号字符和一个空格。Chr(149)AKA hex 95与我使用的字体很相配。此外,第一行应该有一个在添加任何文本时自动显示的项目符号 基本上,我想要一个文本框,它只是一个项目符号列表。我不想给用户斜体或其他任何功能,所以没有Richtextbox 我可以通过一个简单的替换将数据加载到文本框中来处理这个问题,但我希望它能够在键入或从剪贴板粘贴时动态发生,在每次[Enter]击键后自动添加项目符号,或者在粘贴带有换行符的文本时自动添

我有一个多行文本框,我希望每一个换行符在下一行字符前都包含一个项目符号字符和一个空格。Chr(149)AKA hex 95与我使用的字体很相配。此外,第一行应该有一个在添加任何文本时自动显示的项目符号

基本上,我想要一个文本框,它只是一个项目符号列表。我不想给用户斜体或其他任何功能,所以没有Richtextbox

我可以通过一个简单的替换将数据加载到文本框中来处理这个问题,但我希望它能够在键入或从剪贴板粘贴时动态发生,在每次[Enter]击键后自动添加项目符号,或者在粘贴带有换行符的文本时自动添加项目符号,并且文本光标不会不适当地四处跳跃

因为我经常看到回复是“你为什么要这样做?”我会解释:用户会使用这个文本框输入一些关于某个特定客户的简短观点,比如“门牌代码#1234”或“客户不喜欢大蒜”或“一定要提到她的狗”。几乎可以是任何东西,偶尔也可以是几句话,但每个“观点”(即使是一个段落)也应该在视觉上清晰可见。我不想让一个空行占用屏幕空间来分隔段落,但项目符号会使每个“条目”与它自己的点一样明显。当一个给定点在文本框的右侧附近结束时,这一点特别有价值,因此下一点似乎不是前一点的一部分

我在下面的代码“有点开始工作了”,可以通过在键入时将文本光标放回原处(使用Selstart)加以改进我没有跳到开头,但我还没走到那一步,因为删除项目符号、粘贴或剪切时也会产生问题。也可以通过在第一行之前添加项目符号来改进。这些事情很简单

我想要一个简单的“linebreak=linebreak-and-bullet”算法,它可以动态地进行剪切、粘贴、键入、删除,我怀疑它已经存在于某个地方,但我还没有找到这样的代码

或者,如果有一个简单的方法给文本框一个“自定义字体”,其中换行符实际上包含一个看起来像一个大圆点的可见标志符号,那也可以

谢谢你阅读我的问题

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

我删除了“Visual Studio”,因为IDE不应该是这里的问题-如果您的目标是WinForms或WPF,请添加相应的标记好吗?如果您实际使用的是VB,请使用该标记而不是C#(或者根本不使用语言标记)更改了标记。谢谢你们。使用RichTextBox:项目符号和缩进已经是实现的一部分。我不想给用户斜体或其他任何功能。与所需结果无关或相关。绝对相关。怎么不相关?