2010-08-03 92 views

回答

1

您可以重寫OnLayout或OnPaint。

private Size m_CurrentPreferedSize; 
    protected override void OnLayout(LayoutEventArgs e) 
    { 
     base.OnLayout(e); 
     Size newSize = PreferredSize; 
     if(m_CurrentPreferedSize != newSize) 
     { 
      m_CurrentPreferedSize = newSize; 
      //Your code here 
     } 
    } 

PreferredSize在每次調用時計算。

+0

我寧願不重寫OnPaint,因爲這種方法經常被調用。不清楚OnLayout是否有保證*在每次首選大小改變時都會被調用,但它確實有效;我無法找到導致PreferredSize更改的情況,這種情況也不會導致OnLayout被調用。 – 2010-08-25 01:40:01