“ResizeEnd”, эквивалентный для usercontrols

Я пишу UserControl. Я хочу потянуть пользовательский элемент управления, когда изменение размер сделано. Я не могу найти любое событие эквивалентным "ResizeEnd" формы окон.

Есть ли какое-либо эквивалентное событие для пользовательских элементов управления?

Обратите внимание на то, что в этом случае родительским управлением пользовательского элемента управления является самостоятельно UserControl, таким образом, я не могу преобразовать его (родительский пользовательский элемент управления) в форму. Поскольку я использую платформу, я не могу получить доступ к форме, на которой будет отображен этот пользовательский элемент управления.

9
задан JoelC 1 February 2016 в 22:47
поделиться

1 ответ

Нет эквивалента. Форма имеет модальный цикл изменения размера, запускаемый, когда пользователь щелкает край или угол формы. Размер дочерних элементов управления не может быть изменен таким образом, он видит изменения только в своем свойстве Size.

Решите эту проблему, добавив свойство Sizing в свой пользовательский элемент управления. Форма может легко назначить его из переопределений OnResizeBegin / End (). Следуя свойству Parent в событии Load UC до тех пор, пока вы не найдете форму, тоже возможно:

public bool Resizing { get; set; }

private void UserControl1_Load(object sender, EventArgs e) {
  if (!this.DesignMode) {
    var parent = this.Parent;
    while (!(parent is Form)) parent = parent.Parent;
    var form = parent as Form;
    form.ResizeBegin += (s, ea) => this.Resizing = true;
    form.ResizeEnd += (s, ea) => this.Resizing = false;
  }
}
7
ответ дан 4 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: