8

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

4

4 回答 4

10

如果是子类化Control,可以OnResize直接调用,或者暴露在 API 上:

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

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

 typeof (Control).GetMethod("OnResize",
     BindingFlags.Instance | BindingFlags.NonPublic)
     .Invoke(myControl, new object[] {EventArgs.Empty});
于 2009-02-05T10:42:59.373 回答
3

我总是通过调用控件的 Resize 事件处理程序来做到这一点:

control_Resize(null, null);
于 2015-12-18T15:07:07.337 回答
0

只需使用以下命令更改控件的大小: Control.Size = new Size(x,y);

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

或者,如果您只想重绘控件,请执行以下操作: Control.Invalidate();

于 2009-02-05T10:42:09.000 回答
0

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

除此之外,您可能必须更改控件的大小,因为这就是 Resize 事件的用途:)

于 2009-02-05T10:46:48.603 回答