2010-01-14 74 views
7

我添加了一个resize事件到我的窗口小部件之一,它看起来像这样:.NET调整大小事件:获取旧的大小?

void glControl_Resize(object sender, EventArgs e) { 

有没有一种方法可以让我得到widget的老大小(调整前)?也许我可以投e东西,会给我更多的信息?或者我应该在这个事件中保存它?

+0

如果您希望**之前的事件**实际上Windows调用了“WndProc”,并捕获正确的消息。我不确定究竟是哪一个。但这是在调整大小之前获得**的唯一方法。 – n4pgamer 2014-01-18 17:53:52

回答

12

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

Size mOldSize; 

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

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

编辑:

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

如果你正在做你自己的活动,你可以从EventArg派生出来,并使其包含ResizeEventArg,其中包括你想要的东西的大小。

我会使用和OnResizing事件的ResizeEventArg,并且仍然遵循我之前所说的。

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

+0

我没有创建自己的活动。它没有“OnResizing”事件?似乎没有什么“OnResizing”事件?我在主窗体上看到一个'ResizeBegin',但这是一个'Tao.Platform.Windows.SimpleOpenGlControl',它似乎也没有。猜猜我被骗了。不管怎么说,还是要谢谢你。很好供将来参考。 – mpen 2010-01-14 00:29:22