WPF表单应调整大小以显示其内容

时间:2011-05-11 14:27:56

标签: c# wpf wpf-controls

当WPF窗口第一次出现时,其内容似乎已冻结。要刷新内容我需要调整表单大小,然后它将被修复。或者我点击TAB然后找到一个列表框 - 它不可见 - 然后点击它和中提琴!表单再次更新其内容。

你怎么看?怪啊?提前谢谢!

enter image description here

编辑:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
   this.Show();

   while (!AppMain.needClose)
   {
      System.Windows.Forms.Application.DoEvents();
      DoThings();
   }
}

2 个答案:

答案 0 :(得分:1)

调整窗口大小会强制内部构件无效并重新绘制。您可以尝试在加载表单时使表单无效,以强制它执行相同的操作:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
   this.Show();

   this.Invalidate();

   while (!AppMain.needClose)
   {
      System.Windows.Forms.Application.DoEvents();
      DoThings();
   }
}

除非您正在进行某种自定义消息,但标准格式消息泵应该在为您循环时执行此操作。您可能会发现,因为您正在拦截加载窗口的事件,所以您将停止完成初始化。

根据我的经验,调用DoEvents是一种糟糕的代码味道。如果您需要定期执行某些操作,最好从某种计时器触发它。

答案 1 :(得分:1)

当你的窗口加载时它已经显示,为什么你再次调用this.show()?