我不是控件的子类。尝试通过Control.Size = Control.Size
触发事件失败,因为即使新大小实际上不同,它也不会触发。
答案 0 :(得分:8)
如果您是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});
答案 1 :(得分:1)
我总是通过调用Control的Resize事件处理程序来执行此操作:
control_Resize(null, null);
答案 2 :(得分:0)
只需使用以下命令更改控件的大小:Control.Size = new Size(x,y);
更改控件的大小将为该控件发出resize事件,控件应调整大小。
或者,如果您只想重绘控件,请执行以下操作: Control.Invalidate();
答案 3 :(得分:0)
为什么要这样做,以及在什么情况下?例如,当您在控件本身(即在派生控件类中)时,可以调用OnResize。 (或者当你在外面的时候通过反思。)
除此之外,您可能需要更改控件的大小,因为这是Resize事件的用途:)