c# richtextbox 鼠标移动到的行改变颜色,移走该行回到原来颜色,当文本超过单行没有换行符的时候就出错??

ys547007 2017-07-22 05:31:41
鼠标移动事件代码
 private void richTextBox1_MouseMove(object sender, MouseEventArgs e)
{
p.X = e.Location.X;
p.Y = e.Location.Y;
int index = this.richTextBox1.GetCharIndexFromPosition(p);
int line = richTextBox1.GetLineFromCharIndex(index);
if (LINE != line)
{
int oldi = richTextBox1.GetFirstCharIndexFromLine(LINE);
int oldlength = richTextBox1.Lines[LINE].Length;
Console.WriteLine("oldi:{0}--oldlength:{1}", oldi, oldlength);
richTextBox1.Select(oldi, oldlength);
richTextBox1.SelectionColor = Color.Black;

int i = richTextBox1.GetFirstCharIndexFromLine(line);
int length = richTextBox1.Lines[line].Length;
string tx = richTextBox1.Lines[line];

Console.WriteLine("{0}--{1}--{2}--{3}--{4}", index, line, length, i, tx);
this.label1.Text = string.Format("第:{0}行 {1}", line.ToString(), tx);
richTextBox1.Select(i, length);
richTextBox1.SelectionColor = Color.Green;
}
LINE = line;
// int ii = richTextBox1.GetFirstCharIndexOfCurrentLine();


}

鼠标移动到第2行文字

鼠标移动到第3行文字

鼠标移动到第4行文字颜色显示出错

鼠标移动到最后一行文字,无反应
...全文
301 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ys547007 2017-07-27
  • 打赏
  • 举报
回复
引用 4 楼 ilikeff8 的回复:
把不自动换行,把水平滚动条打开
谢谢,这个方式是可以,但项目里还有鼠标悬浮事件,鼠标悬浮到某行,需要在行后显示按钮,这样设置的话,不太合适
ilikeff8 2017-07-25
  • 打赏
  • 举报
回复
把不自动换行,把水平滚动条打开
ys547007 2017-07-25
  • 打赏
  • 举报
回复
有没有熟悉这块的,寻求帮助
ys547007 2017-07-24
  • 打赏
  • 举报
回复
引用 1 楼 shoppo0505 的回复:
你这个判断行的程序是根据换行符来判断的吧? 那最后一行有没有换行符?
我是鼠标移动到第4行文字时,就出错了 获取到的是第3行 index=3,因为行的index是从0开始的,那意思就是第3行文本和第4行文本判断为index=2 的一行了,那既然把一个换行判断为一行,那我鼠标移动到第4行文本时,不是应该获取到的仍然是index=2的行吗?文本也应该跟鼠标在第3行文字时一致。
shoppo0505 2017-07-22
  • 打赏
  • 举报
回复
你这个判断行的程序是根据换行符来判断的吧? 那最后一行有没有换行符?

110,572

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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