为什么此绘制处理程序循环很多次?

时间:2018-09-24 06:14:59

标签: c# winforms

我有一个winform,在LOAD期间它调用了一个文本框背景色更改,从而触发了paint事件-我的代码在文本框颜色更改后再也没有到达行,并且我在逐步学习过程中注意到paint事件正在循环加载的时间。这里发生了什么事? VS是否意识到我陷入了无限的绘画循环,只是为我跳过了损坏的Load代码?

public Pretty_Load()
{
    textBox1.BackColor = Color.FromArgb(230, 255, 255, 255);
    /* Other lines that aren't reached */
}

在这里,paint事件在放弃之前循环了很多次。

private void Pretty_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    Point p1 = this.ClientRectangle.Location;
    Point p2 = new Point(this.ClientRectangle.Right, this.ClientRectangle.Bottom);
    using (LinearGradientBrush brsGradient = new LinearGradientBrush(p1, p2, Color.FromArgb(64, 64, 100), Color.FromArgb(32,0,0)))
    {
        g.FillRectangle(brsGradient, e.ClipRectangle);
    }
}

我正在Pretty表单构造函数中添加绘画事件处理程序:

public Pretty()
{
    InitializeComponent();
    this.Paint += Pretty_Paint;
    /* Some other things and backcolor changes.
}

我怀疑可能是我设置了错误的处理程序,或者循环实际上是在textbox1.BackColor更改期间发生的构造函数中“其他”颜色更改的一部分

0 个答案:

没有答案