C# 单击控件时无法显示涟漪效应

C# 单击控件时无法显示涟漪效应,c#,infinite-loop,C#,Infinite Loop,我试图显示我的涟漪效应时,控制点,但它不工作。我认为这是某种无限循环,但我找不到bug。以下是我在OnMouseClick中的代码: protected override void OnMouseClick(MouseEventArgs e) { base.OnMouseClick(e); xx = MousePosition.X; yy = MousePosition.Y; allow = true;

我试图显示我的涟漪效应时,控制点,但它不工作。我认为这是某种无限循环,但我找不到bug。以下是我在OnMouseClick中的代码:

    protected override void OnMouseClick(MouseEventArgs e)
    {
        base.OnMouseClick(e);
        xx = MousePosition.X;
        yy = MousePosition.Y;
        allow = true;
        while (allow)
        {
            Invalidate();
        }
    }
这是我在OnPaint中的代码:

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        var G = e.Graphics;
        G.DrawString(Text, Font, new SolidBrush(ForeColor), R, SF);
        if (SizeAnimation > 190) allow = false;
        if (allow)
        {
            SizeAnimation = SizeAnimation + 25;
            G.FillEllipse(new SolidBrush(Color.FromArgb(198, 180, 232)), xx, yy, SizeAnimation, SizeAnimation);
            G.DrawString(Text, Font, new SolidBrush(ForeColor), R, SF);
        }
    }
控件的大小分别为145和45。
有人能给我解释一下错误并修复它吗?非常感谢:D

OnPaint
在鼠标单击返回之前无法运行。你不能把你的while循环放在那里。你需要重新设计你的逻辑。有更好的方法,在WPF中实现它非常简单,而且是内置的