0
IM上的代碼編輯器中工作(的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事件時,它每次仍然閃爍,我在richtextbox上添加一個 字符,或者我按下空格鍵。
這樣的:http://oi40.tinypic.com/a43gcy.jpg
現在我的問題是如何才能避免這種情況?或者是否有我能做的,以避免在更新時整個標籤閃爍 ?
非常感謝您的幫助!
閃爍,你的意思是閃爍?或者它是一個穩定的眨眼? – cokeman19
@ cokeman19當我使用計時器時快速閃爍......我傳遞給textchange事件的時間閃爍了我在richtextbox上添加文本的時間 – Elegiac
您可能會從啓用雙緩衝(無論是在標籤級別還是可能在表單級別)受益。這裏有兩個例子:http://stackoverflow.com/questions/3816362/winforms-label-flickering。 – cokeman19