Winforms — изменение размера не вызывается при изменении размера формы

#c# #winforms

#c# #winforms

Вопрос:

Я хочу запустить некоторый код после изменения размера моей формы. Однако следующий код никогда не запускается при изменении размера. Я уверен, что это что-то простое, что я просмотрел (я новичок в C # и программировании в целом). Спасибо.

     private void CalibrationForm_ResizeEnd(object sender, EventArgs e)
    {
        MessageBox.Show("You are in the Form.ResizeEnd event.");
    }
  

Комментарии:

1. Простого создания метода недостаточно. Вы также подключили событие с помощью окна свойств в конструкторе форм?

2. Я этого не сделал. Не могли бы вы просветить меня о том, как это сделать? Я знал, что это что-то тривиальное.

3. вы зарегистрировали событие в событиях формы?

4. щелкните правой кнопкой мыши на форме, затем выберите свойства, затем выберите значок событий (например, значок электричества) .. затем выберите свой метод из выпадающего списка рядом с изменением размера

5. this.ResizeEnd = new EventHandler(CalibrationForm_ResizeEnd);

Ответ №1:

Кажется, вы не подключаете событие, даже подключаете его в свойствах (щелкните правой кнопкой мыши форму, затем свойства и выберите событие, как на картинке)

введите описание изображения здесь

или перехватите событие в конструкторе следующим образом:

 YourForm.ResizedEnd  =new EventHandler(CalibrationForm_Resize);
  

Комментарии:

1. Спасибо. Я понятия не имел о равномерной обработке, а теперь знаю.

Ответ №2:

Поскольку это лучший результат в Google для winforms resize end, который не вызывается, вот еще один ответ для моего случая.

Изменение размера begin и изменение размера end вызываются не при программном изменении размера, а только при перетаскивании пользователем элемента управления.

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

         private void ResizeBTN_MouseDown(object sender, MouseEventArgs e)
        {
            OnResizeBegin(e);
        }

        private void ResizeBTN_MouseUp(object sender, MouseEventArgs e)
        {
            OnResizeEnd(e);
        }
  

Form.ResizeEnd