Vb.net 在文本框或richtextbox中显示空白

Vb.net 在文本框或richtextbox中显示空白,vb.net,textbox,rendering,whitespace,gdi,Vb.net,Textbox,Rendering,Whitespace,Gdi,VisualStudio中有一个选项(我记得很久以前),允许您在代码中看到“空白”。这也经常出现在文件差异查看器中 我想知道是否有人知道如何在VB.net(或任何其他方式)中实现这一点,以便我可以在我的软件中使用类似类型的显示选项 我还没有尝试这样做,但我唯一的第一个想法是覆盖文本框的“绘制”,通过GDI手动添加小选项卡“箭头”和空格“点”,或者从头创建一个文本框控件。在我看来,有一个更简单的方法可以做到这一点 欢迎提供任何建议或解决方案。在整个文档中搜索vbTab常量,并用小箭头(→)(用灰色

VisualStudio中有一个选项(我记得很久以前),允许您在代码中看到“空白”。这也经常出现在文件差异查看器中

我想知道是否有人知道如何在VB.net(或任何其他方式)中实现这一点,以便我可以在我的软件中使用类似类型的显示选项

我还没有尝试这样做,但我唯一的第一个想法是覆盖文本框的“绘制”,通过GDI手动添加小选项卡“箭头”和空格“点”,或者从头创建一个文本框控件。在我看来,有一个更简单的方法可以做到这一点


欢迎提供任何建议或解决方案。

在整个文档中搜索vbTab常量,并用小箭头(
)(用灰色或任何你想要的颜色绘制)

对空格字符执行相同操作,但将其替换为灰点(
·

如果要将其改回,请将
·
替换为空格并替换箭头(
)和选项卡


完成此操作后,将布尔值(
usesymble
)设置为true,并在文本框的按键事件中使用此布尔值,以检查是否应打印常规空格/制表符或
·
/

在整个文档中搜索vbTab常量,并用小箭头(
)(用灰色或任何你想要的颜色绘制)

对空格字符执行相同操作,但将其替换为灰点(
·

如果要将其改回,请将
·
替换为空格并替换箭头(
)和选项卡


完成此操作后,将布尔值(
usesymble
)设置为true,并在文本框的按键事件中使用此布尔值,以检查是否应打印常规空格/制表符或
·
/

您是否考虑过使用?查找选项卡和空格不是问题,可以通过多种方式完成。这是关于实际覆盖空格和制表符本身,以显示“synbol”供用户查看。您可以简单地覆盖关键事件,不费吹灰之力就能得到您想要的。我不认为检测到用户输入制表符或空格会如何改变渲染输出,尤其是在多次击键和可能的滚动之后。我不想把一个选项卡/空间从一个选项卡/空间变成另一个选项卡/空间,只要在它的位置渲染浅灰色箭头/点即可。您能进一步解释一下吗?您考虑过使用吗?查找选项卡和空格不是问题,可以通过多种方式完成。这是关于实际覆盖空格和制表符本身,以显示“synbol”供用户查看。您可以简单地覆盖关键事件,不费吹灰之力就能得到您想要的。我不认为检测到用户输入制表符或空格会如何改变渲染输出,尤其是在多次击键和可能的滚动之后。我不想把一个选项卡/空间从一个选项卡/空间变成另一个选项卡/空间,只要在它的位置渲染浅灰色箭头/点即可。你能进一步解释吗?那很明智。我没有想到要实际更改字符和字体。我想我可以使用Webdings 3“g”字符作为箭头,使用Webdings“=”作为带有浅色字体的点,这样我就可以完全避免任何外部的图形渲染。当我需要“普通”文本时,也可以使用扩展方法来解析它。非常好,竖起两个大拇指!这是可行的,但会丢失选项卡提供的间距--箭头字符的宽度为一个字符,而选项卡的宽度可以为1-8个字符。有什么想法吗?@alldayremix也许你可以将其替换为箭头字符+一些前导和尾随的特殊空格字符,任何与空格不同的字符,这样当你切换时它就不会被替换为点了好吧,但是我如何找到显示的字符宽度(例如1个字符、3个字符、8个字符)特定制表符的名称?@alldayremix您使用的是richtexboxcontrol吗?如果是这样,richTextBox1.SelectionTabs可能会帮助您实现智能化。我没有想到要实际更改字符和字体。我想我可以使用Webdings 3“g”字符作为箭头,使用Webdings“=”作为带有浅色字体的点,这样我就可以完全避免任何外部的图形渲染。当我需要“普通”文本时,也可以使用扩展方法来解析它。非常好,竖起两个大拇指!这是可行的,但会丢失选项卡提供的间距--箭头字符的宽度为一个字符,而选项卡的宽度可以为1-8个字符。有什么想法吗?@alldayremix也许你可以将其替换为箭头字符+一些前导和尾随的特殊空格字符,任何与空格不同的字符,这样当你切换时它就不会被替换为点了好吧,但是我如何找到显示的字符宽度(例如1个字符、3个字符、8个字符)特定制表符的名称?@alldayremix您使用的是richtexboxcontrol吗?如果是这样,richTextBox1.SelectionTabs可能会对您有所帮助