2013-01-15 30 views
0

VB.NET/Win窗体/ VS 2008UI滞后。调整我的应用程序窗口需要maxes出cpu

我正在研究一些软件,我很满意迄今为止的UI设计..非常结构化,易于阅读..但是,当我调整窗口的大小,这是非常“滞后”。当我观察任务管理器时,调整窗口大小时CPU峰值达到25%(利用核心的100%)(未调整大小时为0%)。如果是这样的话,它将以每秒4帧的速度重新绘制窗口。

这是一个相当复杂的用户界面,但没有任何意义。我不觉得它应该像这样运行。

我的布局层次结构看起来是这样的:

<FORM> 
    <TABCONTROL> (first tab example, subsequent tabs follow the same control hierarchy) 
     <SPLITCONTAINER> 
      <PANEL 1> 
       <DATAGRIDVIEW /> 
      </PANEL 1> 
      <PANEL 2> 
       <TABCONTROL> 
        <TABCONTROL> 
         <TABCONTROL> 
          Lots of data fields in these tabs 
         </TABCONTROL> 
        </TABCONTROL> 
       </TABCONTROL> 
      </PANEL 2> 
     </SPLITCONTAINER> 
    </TABCONTROL> 
</FORM> 

一切都停靠到其父。这一切都非常流畅。因此,分离器在主选项卡中停靠(填充模式),Tabcontrols在其他选项卡控件中对接(填充模式)等。

我认为它只是在系统上施加大负载以尝试重新计算控件位置窗口被调整大小。

对于我完全可以重新设计软件的能力有什么建议?

+0

你处理任何调整事件或任何事件?如果是的话,请发布处理vb.net代码 – Dhawalk

+0

@Dhawalk根本没有。 – user1003916

+1

不幸的是,这对于WinForms应用程序来说是正常的,但是,这应该有所帮助:[Suspend/Resume Layout](http://stackoverflow.com/questions/2353381/prevent-window-redraw-when-resizing-c-sharp-windows -forms) – xfx

回答

1

不幸的是,这对WinForms应用程序来说是正常的,特别是那些有很多嵌套容器的应用程序。

但是,有一个“解决办法”,这涉及调用挂起和恢复布局表单时需要重新调整,并已调整后:

Prevent window redraw when resizing c# windows forms

相关问题