0

コードエディタ(winform)に取り組んでいます

そして、次のようなラベルを使用してカウントラインに取り組んでいます:

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 に設定します。ラベル ドック = 左 . 今問題は、プログラムを実行するたびに、ラベルがノンストップで非常に速く点滅していたことです。私が変更しても間隔は同じです。

しかし、updateNumberLabel() を textchange イベントに転送すると、richtextbox に char を追加するか space を押すたびに点滅します。

このように: http://oi40.tinypic.com/a43gcy.jpg

今私の質問は、どうすればこれを回避できますか? または、更新時にラベル全体が点滅するのを避けるためにできることはありますか?

助けてくれてありがとう!

4

1 に答える 1

0

ラベル レベルまたは場合によってはフォーム レベルで、ダブル バッファリングを有効にすることでメリットが得られる場合があります。

ここに両方の​​例があります: winforms Label flickering .

于 2013-07-16T11:52:01.753 に答える