我正在编写代码编辑器(winforms)
我正在使用像这样的标签在countline上工作:
http://oi42.tinypic.com/iypoub.jpg
使用此代码:
private void timer_countline_Tick(object sender, EventArgs e)
{
updateNumberLabel();
}
private void updateNumberLabel()
{
//we get index of first visible char and number of first visible line
Point pos = new Point(0, 0);
int firstIndex = rtb.GetCharIndexFromPosition(pos);
int firstLine = rtb.GetLineFromCharIndex(firstIndex);
//now we get index of last visible char and number of last visible line
pos.X = ClientRectangle.Width;
pos.Y = ClientRectangle.Height;
int lastIndex = rtb.GetCharIndexFromPosition(pos);
int lastLine = rtb.GetLineFromCharIndex(lastIndex);
//this is point position of last visible char, we'll use its Y value for calculating numberLabel size
pos = rtb.GetPositionFromCharIndex(lastIndex);
//finally, renumber label
numberLabel.Text = "";
for (int i = firstLine; i <= lastLine + 1; i++)
{
numberLabel.Text += i + 1 + "\n";
}
}
计时器设置间隔为1。 label dock = left。 现在问题是我每次运行程序时标签都不停地闪烁如此之快。 即使我改变间隔仍然是一样的。
但是当我将updateNumberLabel()传输到textchange事件时,每当我添加一个时它仍会闪烁 富文本框上的字符或我按空格。
像这样:http://oi40.tinypic.com/a43gcy.jpg
现在我的问题是如何避免这种情况?或者无论如何我可以做到避免眨眼 更新后的整个标签?
非常感谢您的帮助!