【问题标题】:Problem with Form size after Restore event恢复事件后的表单大小问题
【发布时间】:2011-04-11 08:23:05
【问题描述】:

我有一个包含 1 个父表单和 3 个子表单的 Mdi 应用程序。 父表单大小总是这样计算的:

this.Size = ActiveMdiChild.Size;
this.Height +=150; // because there is a control at the bottom of Parent form

问题是,当我最小化父表单,然后恢复它时,它的大小在恢复后减少了 20。所以表单看起来有点扭曲。在我的代码中,我没有指定它来减小它的大小,所以它应该在恢复后恢复到之前的大小。我想这可能是一个错误。所以我想知道如何避免这种情况。我的想法是捕获还原事件,然后将表单大小更改为应有的大小,但我不知道如何捕获还原事件。

【问题讨论】:

  • 您是否使用 FormWindowState.Maximized 作为表单?
  • 对于所有子表单 - 是的,我需要它们填写父表单中的所有空间。我在设置父表单大小之前最大化子表单。

标签: c# .net mdi


【解决方案1】:

您可以通过覆盖 WndProc 来做到这一点:

 protected override void WndProc( ref Message m )
    {
        if( m.Msg == 0x0112 ) // WM_SYSCOMMAND
        {
            // Check your window state here
            if (m.WParam == new IntPtr( 0xF120) ) // Maximize event - SC_MAXIMIZE from Winuser.h
            {
                  // THe window is being restored
                  this.Size = ActiveMdiChild.Size;
                  this.Height +=150;
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    相关资源
    最近更新 更多