阻止窗体进入窗口模式

本文关键字:窗口 模式 窗体 | 更新日期: 2023-09-27 18:20:53

我想创建一个新表单,它被设置为最大化。它应该显示标题栏和任务栏。到目前为止,这还不是什么大问题。当我设置this.MaximizeBox = false;时,标题栏上的按钮将被禁用,但如果我拖动或双击标题栏,表单将进入窗口模式(在Windows7上测试)。

MinimumSizeMaximumSize设置为相同值失败。

阻止窗体进入窗口模式

public class Form1 {
  public Form1(){
      InitializeComponent();
      WindowState = FormWindowState.Maximized;
      Load += (s,e) => {
         MaximizeBox = false;        
      };
  }
  bool hitControlButtons;
  protected override void WndProc(ref Message m)
  {
     if ((!hitControlButtons) && (m.Msg == 0xa3 || m.Msg == 0xa1))//WM_NCLBUTTONDBLCLK and WM_NCLBUTTONDOWN
     {                
        return;
     }
     if (m.Msg == 0xA0)//WM_NCMOUSEMOVE
     {
        int wp = m.WParam.ToInt32();                
        hitControlButtons = wp == 8 || wp == 20 || wp == 9;//Mouse over MinButton, CloseButton, MaxButton                               
     }
     base.WndProc(ref m);            
  }
}