在VS.NET下开发一个windows应用程序,现希望在界面设计时禁止调整窗口(Form)的边框大小--即运行程序时,当鼠标移动到窗口的边框时,无法对窗口进行拉伸(类似windows附带游戏中的“红心大战”)。  请问如何实现这一功能???!!! 谢谢

解决方案 »

  1.   

    在Windows编程中,有时需要限制窗体的大小。那么在C#中如何实现对窗体大小的限制呢?要限制窗体的大小,就必须处理WM_SIZEING消息,而WM_SIZEING消息的lParam参数,是一个指针,它指向RECT结构。这样,C#中又该如何处理指针类型的数据呢?下面的代码仅对窗体的宽度作限制,是根据AOGO的汇编程序改写。看看代码。就知道C#中是如何处理指针类型的数据了。(由此可见C#是多么健壮强劲!)using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Runtime.InteropServices;   //  注意此命名空间的Marshal类,
                                            //  它提供了许多类型转化方法:
                                            //  Marshal.PtrToStringAnsi();
                                            //    Marshal.PtrToStringAuto();
                                            //    Marshal.PtrToStringBSTR();
                                            //    Marshal.PtrToStringUni();
                                            //    Marshal.PtrToStructure();
                                            //    Marshal.StringToBSTR();
                                            //    Marshal.StringToCoTaskMemAnsi();
                                            //    Marshal.StringToCoTaskMemAuto();
                                            //    Marshal.StringToCoTaskMemUni();
                                            //    Marshal.StringToHGlobalAnsi();
                                            //    Marshal.StringToHGlobalAuto();
                                            //    Marshal.StringToHGlobalUni();
                                            //    Marshal.StructureToPtr();        // 声明Winodws消息常量
            private const int WM_SIZEING = 0x0214;        // 声明RECT结构
            public struct RECT
            {
                public int left;
                public int top;
                public int right;
                public int bottom;
            }// 以下是处理WINDOWS消息的主要代码
            protected override void WndProc(ref System.Windows.Forms.Message m )
            {
                switch(m.Msg) 
                {         
                    case WM_SIZEING:                    ///*****以下各种方法,生成代码大小顺序是由小到大
                         
                        // 第一种方法,简洁明了
                        // RECT rc = (RECT)m.GetLParam(typeof(RECT));                    // 第二种方法,普适通用。代码比第一种方法多 5 字节
                        // RECT rc=(RECT)Marshal.PtrToStructure(m.LParam ,typeof(RECT));                    // 第三种方法,易懂稍繁。代码比第二种方法多 4 字节
                        RECT rc = new RECT();
                        rc = (RECT)m.GetLParam(rc.GetType());
                        // 限制窗体宽度不超过600
                        if (rc.right - rc.left >450)
                        {
                            rc.right = rc.left + 450;
                        }
                        else if (rc.right - rc.left <200)
                        {
                            rc.right = rc.left + 200;
                        }                    // 将结构rc各字段的值显示出来
                        textBox1.Text = rc.left.ToString();
                        textBox2.Text = rc.top.ToString();
                        textBox3.Text = rc.right.ToString();
                        textBox4.Text = rc.bottom.ToString();                    // 将结构rc复制到m.LParam指针所指向的RECT结构
                        Marshal.StructureToPtr(rc,m.LParam,true);                    break;
                    default: 
                        base.WndProc(ref m);   // 调用基类函数处理其他消息。 
                        break; 
                } 
            }
      

  2.   

    BorderStyle 设为FixedSingle 即可。
      

  3.   

    窗口有一个属性:Formborderstyle:fixedsingle
    或在窗口的sizechanged事件中:使窗口的宽和高为一个固定的值
      

  4.   

    其实方法还是很多的!1、把窗体的Formborderstyle属性设置成FixedSingle
    2、把窗体的最大尺寸和最小尺寸改成同一值
      

  5.   

    BorderStyle 设为FixedSingle 就可以了
      

  6.   

    在属性面板将BorderStyle 设为FixedSingle 就可以了
    同时将maxsizeable 设置成false就可以了
      

  7.   

    设置FormBorderStyle
    试试就知道了 :)
      

  8.   

    和 Knight94(愚翁) 一樣,
    只是路過
      

  9.   

    BorderStyle 设为FixedSingle;MaximizeBox 设成false 也就是在InitializeComponent()里加上
    FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
    MaximizeBox = false;
      

  10.   

    在属性面板将BorderStyle 设为FixedSingle 就可以了
    同时将maxsizeable 设置成false就可以了设置就成
      

  11.   

    边框不可以变大小
    BorderStyle 设为FixedSingle
    不能最大化窗口
    MaximuzeBox 设为False
    不能最小化窗口
    MinimizeBox 设为False
    窗体右上角没有关闭按钮,不能关闭窗口,需要用alt+F4
    ControlBox 设为False
      

  12.   

    不好意思,第一个写错了,呵呵……
    点击Form,更改下面的这些属性就可以了:
    边框不可以变大小(这一个属性就是你要求的了)
    FormBorderStyle 设为FixedSingle
    不能最大化窗口
    MaximuzeBox 设为False
    不能最小化窗口
    MinimizeBox 设为False
    窗体右上角没有关闭按钮,不能关闭窗口,需要用alt+F4
    ControlBox 设为False