请问 C#中怎么让richtextBox添加的一行显示在第一行??

请问 C#中怎么让richtextBox添加的一行显示在第一行??,第1张

可以这样写代码:

string newStrToAdd = "string to add"

yourRichtextBox.Text = newStrToAdd + Environment.NewLine + yourRichtextBox.Text

就可以,让新添加的内容,单独显示一行,而且是第一行了。

这个问题是要理解richtextBox.SelectionColor

属性

richtextBox.SelectionColor是获取或设置当前选定文本或之后输入点的颜色

例如

this.richTextBox1.SelectionColor == Color.Red

richtextBox.AppendTex("aaa")

richtextBox.AppendTex("bbb")

this.richTextBox1.SelectionColor == Color.Black

richtextBox.AppendTex("ccc")

richtextBox.AppendTex("ddd")那么输出的aaabbb为红色,cccddd为黑色

又如

this.richTextBox1.SelectionColor == Color.Red

richtextBox.AppendTex("aaa\n")

richtextBox.AppendTex("bbb\n")

this.richTextBox1.SelectionColor == Color.Black

richtextBox.AppendTex("ccc\n")

richtextBox.AppendTex("ddd\n")输出结果

aaa红色

bbb黑色

ccc黑色

ddd黑色

求行:

RichTextBox1.GetLineFromChar(RichTextBox1.SelStart)+1

这个代码呢,我的理解呢,是获取在selstart的地方的行数。一般来讲selstart的地方都是光标的地方,然后会给你返回line。不过返回的时候要自己加1。不是很懂这个语法,有懂得可以教我一下

以上是求行数。

求列:

For i = 0 To RichTextBox1.SelStart

If RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) - RichTextBox1.GetLineFromChar(RichTextBox1.SelStart - i) <>0 Then Exit For

j = j + 1

Next i

这个for循环呢,讲的是检查这一行光标前有多少个列,然后用J输出列的个数。

因为VB6.0没有RichTextBox1.GetFirstCharIndexOfCurrentLine这种语法。所以就得自己模拟这个过程。

具体怎么检查的呢,首先将 i 从0循环到光标处,

如果 【光标字符数】处的行数 减去 【光标字符数减去 i 个字符数】处的行数小于0了,我写了个不为零。但此时写小于零就可以。那么代表着换行了,同时也代表着光标到上一行之间有多少字。用j存储循环次数,得出对应列数。(我们中文习惯是叫第一列,但程序实际上是第零列,但在循环的时候就注意到并解决这个问题了)

如果你替换写法,例如

If RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) - RichTextBox1.GetLineFromChar(RichTextBox1.SelStart + i) >0 Then Exit For

j = j + 1

Next i

这个 J 就对应着光标到该行结尾有几个字符了,如果有需要可以使用,但一般不需要。

那么就像上面说的那样,行列都求出来了,最后用事件和TEXT或者caption表现出来就好了

至于说总行数

RichTextBox1.GetLineFromChar(Len(RichTextBox1.Text)) + 1

通过对最后一个字符的位置(总长度)的行来判断呗,不过也得加一。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11378195.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存