代码之家  ›  专栏  ›  技术社区  ›  mafu

如何触发控件。在不实际调整大小的情况下调整事件的大小?

  •  4
  • mafu  · 技术社区  · 17 年前

    我没有对控件进行子类化。试图通过触发事件 Control.Size = Control.Size 失败,因为即使新的大小实际上不同,它也不会触发。

    4 回复  |  直到 10 年前
        1
  •  8
  •   Marc Gravell    17 年前

    如果你是子类 Control 你可以打电话 OnResize 直接或在API上公开:

     public void OnResize() {
         this.OnResize(EventArgs.Empty);
     }
    

    但是,不能对任意控件执行此操作。你可以改变 Size 来来往往?或者,您可以使用反射,但这很简单:

     typeof (Control).GetMethod("OnResize",
         BindingFlags.Instance | BindingFlags.NonPublic)
         .Invoke(myControl, new object[] {EventArgs.Empty});
    
        2
  •  1
  •   John Line    10 年前

    我总是通过调用控件的Resize事件处理程序来完成此操作:

    control_Resize(null, null);
    
        3
  •  0
  •   Fabian Schmied    17 年前

    为什么要这样做,在什么情况下?例如,当您在控件本身(即在派生控件类中)中时,可以调用OnResize。(或者通过反射,当你在外面的时候。)

    除此之外,您可能还需要更改控件的大小,因为这就是调整大小事件的作用:)

        4
  •  0
  •   Calanus    17 年前

    只需使用:control.size=新大小(x,y)更改控件的大小;

    更改控件的大小将为该控件发出调整大小事件,控件应调整大小。

    或者,如果只想重新绘制控件,请执行以下操作: control.invalidate();

    推荐文章