2010-08-03 73 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