Событие изменения размера .NET: Получить старый размер? - PullRequest
8 голосов
/ 14 января 2010

Я добавил событие изменения размера к одному из моих виджетов, которое выглядит следующим образом:

void glControl_Resize(object sender, EventArgs e) {

Есть ли способ получить старый размер виджета (до изменения размера)? Может быть, я могу привести e к чему-то, что даст мне больше информации? Или я должен просто сохранить его во время этого события?

Ответы [ 2 ]

13 голосов
/ 14 января 2010

Да, просто отслеживание старого размера в поле класса является простым решением. Например:

Size mOldSize;

private void glControl_Resize(object sender, EventArgs e) {
  if (mOldSize != Size.Empty && mOldSize != glControl.Size) {
    // do something...
  }
  mOldSize = glControl.Size;
}
2 голосов
/ 14 января 2010

По соглашению вы должны добавить событие OnResizing, которое запускается как раз, когда оно собирается измениться, но не изменилось, а затем вы запускаете OnResize после его изменения размера. Вы получите старое значение из вашего EventArg в событии OnResizing.

Edit:

Вы создаете свое собственное событие или запускаете один из включенных элементов управления?

Если вы делаете свое собственное событие, вы можете извлечь из EventArg и сделать что-то вроде ResizeEventArg, которое включает в себя размер того, что вы хотите.

Я бы использовал ResizeEventArg как для событий Resize, так и OnResizing, и все равно следовал бы тому, что сказал ранее.

Или, если вы знаете, какой это тип элемента управления, вы можете привести Object sender к типу, а затем прочитать свойство.

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