C# 锁定纵横比会导致窗口闪烁

C# 锁定纵横比会导致窗口闪烁,c#,winforms,resize,aspect-ratio,window-resize,C#,Winforms,Resize,Aspect Ratio,Window Resize,我正在处理一个应用程序,它要求我强制主窗口具有锁定的纵横比。我找到了这个片段。它可以工作,但窗口在重新调整大小时会闪烁 float _currentRatio; bool _lockRatio=false; public bool LockRatio { get{ return _lockRatio; } set{ _lockRatio=value; } } protected override void OnSizeChanged(EventArgs e) { if

我正在处理一个应用程序,它要求我强制主窗口具有锁定的纵横比。我找到了这个片段。它可以工作,但窗口在重新调整大小时会闪烁

float _currentRatio;
bool _lockRatio=false;

public bool LockRatio
{
    get{ return _lockRatio; }
    set{ _lockRatio=value; }
}

protected override void OnSizeChanged(EventArgs e)
{
    if(!_lockRatio)
        this._currentRatio=(float)this.Height/(float)this.Width;
    else
        this.Height=(int)(this.Width*this._currentRatio);

    base.OnSizeChanged (e);
}

有没有办法避免这种闪烁?

试试。基本上,使用
WndProc
而不是.NET事件(大小更改后ocurr)将其作为答案,我接受它,因为它工作得非常完美!