如何在vs2005 C#中同时实现以下功能:
1.在不修改窗体的maximizebox的情况下,让窗体在运行时以最大化的模式出现。
2.当单击最大化按纽或双击标题栏时,使窗体只剩下标题栏,再按一下最大化按纽或再次双击标题栏时恢复。
3.窗体标题栏位置始终保持不变。

解决方案 »

  1.   

    int oldHeight = 0;
            protected override void WndProc(ref Message m)
            {
                const int WM_NCLBUTTONDBLCLK = 0x00A3;
                switch (m.Msg)
                {
                    case WM_NCLBUTTONDBLCLK:
                        if (oldHeight <= 0)
                        {
                            oldHeight = ClientSize.Height;
                            ClientSize = new Size(ClientSize.Width, 0);
                        }
                        else
                        {
                            ClientSize = new Size(ClientSize.Width, oldHeight);
                            oldHeight = 0;
                        }
                        return;
                }
                base.WndProc(ref m);
            }
      

  2.   

    窗体在运行时以最大化的模式出现:设置窗体的WindowState 属性。this.WindowState = FormWindowState.Maximized;
    窗体标题栏位置始终保持不变:设置窗体的StartPosition 属性.this.StartPosition = FormStartPosition.Manual;
    单击最大化按纽或双击标题栏时,使窗体只剩下标题栏,实现这个功能。那你就写代码吧。楼上的那个方法也不错的。
      

  3.   

    开始设置:
      this.Width=Screen.GetWorkingArea(this).Width;
      this.Height = Screen.GetWorkingArea(this).Height;
      this.Location = new Point(0, 0);当双击标题栏或单击最大化按纽时:
    和昨天你发的那个一样处理,
      protected override void WndProc(ref Message m)
            {
                if (m.Msg == WM_NCLBUTTONDBLCLK||m.Msg ==WM_MAXIMIZEBOX)
                {
             .....
           }只是我不知道那个最大化按钮的消息Id.
      

  4.   

    5楼的老兄,最大化的ID是不是下面这个?
      WM_SYSCOMMAND   消息         wParam   为   SC_MAXIMIZE