"ResizeEnd"等效于usercontrols

Ram*_*Ram 9 .net resize winforms

我正在写一个UserControl.我想在调整大小时绘制用户控件.我无法找到任何与Windows窗体的"ResizeEnd"等效的事件.

用户控件是否有任何等效事件?

请注意,在这种情况下,用户控件的父控件本身就是UserControl,因此我无法将其(父用户控件)转换为表单.当我使用框架时,我无法访问将显示此用户控件的表单.

Han*_*ant 7

没有等价物.表单具有模态大小调整循环,在用户单击表单的边缘或角落时启动.子控件无法以这种方式调整大小,只能看到对其Size属性的更改.

通过向用户控件添加Sizing属性来解决此问题.表单可以轻松地从其OnResizeBegin/End()覆盖中分配它.在UC的Load事件中的Parent属性之后,直到您找到Form也是可能的:

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;
  }
}
Run Code Online (Sandbox Code Playgroud)