C#窗体编程(windows forms)禁止窗口最大化的方法

本文介绍在C#窗体编程时,如何禁用系统默认的三种将窗口最大化的方式,包括系统菜单、最大化按钮,以及窗口的拖拽。

Windows环境下的窗体,要想最大化,有多种办法。比如最大化按钮,比如拉伸窗口大小,或者是使用系统菜单中的最大化。系统菜单即在一个窗口中按(Alt+空格)出现在窗口左上角的那个菜单。

那么有没有办法将一个窗体中所有的最大化功能全部去掉呢?需求肯定是有的,就看我们怎么来实现了。

1、处理系统菜单中的最大化功能

首先在窗体类中声明:

代码如下:

public class Form1 : System.Windows.Forms.Form
{
 [DllImport("user32.dll",EntryPoint="GetSystemMenu")] //导入API函数
 extern static System.IntPtr GetSystemMenu(System.IntPtr hWnd , System.IntPtr bRevert);

[DllImport("user32.dll",EntryPoint="RemoveMenu")]
 extern static int RemoveMenu (IntPtr hMenu, int nPos, int flags);
 static int MF_BYPOSITION = 0x400;
 static int MF_REMOVE = 0x1000;

public Form1()//构造函数
 {
  InitializeComponent();
  RemoveMenu(GetSystemMenu(Handle,IntPtr.Zero),0,MF_BYPOSITION|MF_REMOVE);   
 }
}

2、设置窗体不能通过伸拉改变大小

代码如下:

//改变窗体风格,使之不能用鼠标拖拽改变大小
this.FormBorderStyle = FormBorderStyle.FixedSingle;

3、设置窗口的最大化按钮不可用

代码如下:

//禁止使用最大化按钮
this.MaximizeBox = false;

(0)

相关推荐

  • c#一个定时重启的小程序实现代码第1/2页

    原理我像大家都很清楚,这里只说.NET(c#实现).服务器每次启动或者重启,都是没登陆的.那意味着启动项里不只能做,我就考虑到使用Windows服务.Windows服务在系统加载时候就会启动所有服务,把程序写进里面应该没错了. 需要重启,那就要一个时间来效验,写法都有很多.我这里采用ini来存放. Time 记录要重启的时间,验证时间. Day 用来累加天数. 复制代码 代码如下: [Reboot] Time=02:02:01 Day=3 使用System.Timers.Timer循环验证时间(

  • c#创建windows服务入门教程实例

    用c#中创建一个windows服务非常简单,与windows服务相关的类都在System.ServiceProcess命名空间下. 每个服务都需要继承自ServiceBase类,并重写相应的启动.暂停.停止等方法. windows服务的相关信息是存放与注册表中的,所以他可以在不需要用户登录的情况下自动运行,在c#中你不需要再直接向注册表中添加信息了,c#提供了服务安装类 ServiceProcessInstaller和ServiceInstaller来实现服务的安装. 首先,用vs创建一个win

  • JavaScript与C# Windows应用程序交互方法

    一.建立网页 <html> <head>       <meta http-equiv="Content-Language" content="zh-cn">       <script language="javascript" type="text/javascript">              <!-- 提供给C#程序调用的方法 -->           

  • c#定时器使用示例详解

    在C#里关于定时器类就有3个  1.定义在System.Windows.Forms里  2.定义在System.Threading.Timer类里  3.定义在System.Timers.Timer类里 System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API  SetTimer实现的.它的主要缺点是计时不精确,而且必须有消息循环,Console Application(控制台

  • c#.NET中日志信息写入Windows日志中解决方案

    1. 目的   应用系统的开发和维护离不开日志系统,选择一个功能强大的日志系统解决方案是应用系统开发过程中很重要的一部分.在.net环境下的日志系统解决方案有许多种,log4net是其中的佼佼者.  在Windows2000及以上操作系统中,有一个Windows日志系统,它包括应用程序(Application)事件日志.系统(System)日志和安全(Security)日志,事件日志也可以是自定义日志.在.net Framework中也提供了相应的类和接口来使用应用程序事件日志或者自定义事件日志

  • C#编写的windows计算器的实例代码

    复制代码 代码如下: using System; using System.Drawing; using System.Windows; using System.Windows.Forms; using System.Collections; using System.ComponentModel; using System.Data; namespace comput {     /// <summary>     /// 这是一个计算器的简单实现.     /// </summar

  • C#添加Windows服务 定时任务

    本文实例为大家分享了C#添加Windows服务的具体方法,供大家参考,具体内容如下 源码下载地址:http://xiazai.jb51.net/201701/yuanma/Windowsservice1(jb51.net).rar 步骤一.创建服务项目. 步骤二.添加安装程序. 步骤三.服务属性设置 [serviceInstaller1]. 4.1 添加定时任务 public partial class SapSyn : ServiceBase { System.Timers.Timer tim

  • C#定时器实现自动执行的方法

    本文实例讲述了C#定时器实现自动执行的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: //下面讲一个打开窗体定时执行按钮的东西 private void Form1_Load(object sender, EventArgs e) { System.Timers.Timer pTimer = new System.Timers.Timer(5000);//每隔5秒执行一次,没用winfrom自带的 pTimer.Elapsed+=pTimer_Elapsed;//委托,要执

  • c#定时运行程序分享(定时程序)

    1)在我们的项目中添加引用文件:TaskSchedulerEngine.dll(dll定义了一个ITask接口,定义了两个方法Initialize和HandleConditionsMetEvent): 2)创建一个定时触发的类:SyncTask.cs(类名自己随便定义),该类必须实现接口 ITask.具体代码如下: 复制代码 代码如下: public class SyncTask : ITask{ //接受传递过来的参数的变量 private string configName;     ///

  • ASP.NET(C#) 定时执行一段代码

    Global.asax C# code 复制代码 代码如下: <%@ Application Language="C#" %> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Threading" %> <script runat="server"> string LogPath; Thread t

随机推荐