我没有对控件进行子类化。尝试通过Control.Size = Control.Size
失败触发事件,因为即使新大小实际上不同,它也不会触发。
mafutrct
问问题
24192 次
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 回答