Как остановить событие ResizeEnd при перемещении формы? - PullRequest
4 голосов
/ 03 февраля 2012

Я пишу определенный код в форме ResizeEnd событие.Теперь проблема в том, что когда форма перемещается путем нажатия и перетаскивания на панели заголовков, происходит событие ResizeEnd и выполняется код, даже если размер формы НЕ изменяется.

Я просмотрел документацию MSDN для события Resizeend и там говорится, что событие сработает при перемещении формы (не понимаю, почему это происходит, когда размер НЕ изменяется).

Для разрешения я поставил условие if, чтобы проверить, изменяется ли размер, как показано ниже, чтобы остановить выполнение кода при перемещении формы:

int Prv_Height; int Prv_Width;
private void TemplateGrid_ResizeEnd(object sender, EventArgs e)
{
    if (this.Size.Width != Prv_Width || this.Size.Height != Prv_Height)
    {
        Prv_Width = this.Size.Width;
        Prv_Height = this.Size.Height;
        //Other code here when form resize ends...
    }
}

Так есть ли способ остановить событие ResizeEnd, чтобыогонь, когда форма перемещается?или любой другой лучший подход к решению проблемы?

1 Ответ

0 голосов
/ 07 февраля 2014

Вы можете переместить свой чек для изменения размера на новую базовую форму. В производных формах событие resizeEnd будет запускаться только в том случае, если размер действительно изменился.

public partial class CustomForm : Form
{                       
    private Size _prvSize;

    public CustomForm()
    {
        InitializeComponent();        
    }

    protected override void OnShown(EventArgs e)
    {
        _prvSize = this.Size;
        base.OnShown(e);
    }

    protected override void OnResizeEnd(EventArgs e)
    {
        if (this.Size == _prvSize)
            return;

        _prvSize = this.Size;
        base.OnResizeEnd(e);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...