基本思路:
在usercontrol组件中分别放一个panel和richtextbox,两者均高度相等,无border,且顶端对齐,完全填充usercontrol的client界面
计算得到richtextbox的当前显示文本的开始行坐标crntFirstPosk开始行号crntFistLine,开始字符索引号crntFirstIndex和最末行坐标crntLastPos,最末行号crntLastLine,最末行字符索引号crntLastIndex,计算得到行距,然后在panel1上绘制行号,注意:panel1与richtextbox的坐标有些许偏差,通过验证得到之间的偏差(偏差见代码),保证1~2000之间常规字体9~30之间偏差在允许范围之内(自己验证调试)
将showLineNo方法放在panel1的paint方法内,当panel一刷新就绘制行号(相当于重写paint