.NET调整大小事件:获取旧大小?

时间:2010-01-14 00:05:59

标签: c# .net winforms

我在其中一个小部件中添加了一个resize事件,如下所示:

void glControl_Resize(object sender, EventArgs e) {

有没有办法可以获得小部件的旧尺寸(在调整大小之前)?也许我可以将e投射给能给我更多信息的东西?或者我应该在那次活动中保存它?

2 个答案:

答案 0 :(得分:13)

是的,只是在类字段中跟踪旧尺寸就是一个简单的解决方案。例如:

Size mOldSize;

private void glControl_Resize(object sender, EventArgs e) {
  if (mOldSize != Size.Empty && mOldSize != glControl.Size) {
    // do something...
  }
  mOldSize = glControl.Size;
}

答案 1 :(得分:2)

按照惯例,您应该添加一个OnResizing事件,该事件在即将更改但未更改时触发,然后在调整后调整OnResize。您将从EventArg事件中的OnResizing获取旧值。

编辑:

您是在创建自己的事件还是触发其中一个包含的控件?

如果您正在进行自己的活动,可以从EventArg派生,并制作类似ResizeEventArg的内容,其中包含您想要的内容。

我会在ResizeEventArgResize事件中使用OnResizing,并且仍然按照我之前的说法进行操作。

或者如果您知道它是哪种控件,您可以将Object sender转换为该类型,然后阅读该属性。