2010-01-14 91 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