在某些时候,我们有一些如下需要,例如:不能移动程序的窗体;不能点击关闭程序的窗体;不能最大化/最小化窗体等。
上面的一些需求,通过对窗体属性的一些设置,基本都可以实现,但是,确并不总是能满足我们的需要。
例如:我们需要让关闭按钮显示,但是变灰(不能点击),同时正常的显示最大化和最小化按钮
API中,对于菜单的操作,可谓丰富,常用的有:
我这里,就举2个例子, EnableMenuItem 和 DeleteMenu
<script type="text/javascript"><!--
google_ad_client = "pub-5834986413902221";
/* 336x280, 创建于 09-1-11 */
google_ad_slot = "3738213453";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
完整的代码如下:
[DllImport("user32.dll")]
static extern IntPtr GetSystemMenu(IntPtr hwnd, bool bRevert);
[DllImport("user32.dll")]
static extern bool DeleteMenu(IntPtr hMenu, uint uPosition, uint uFlags);
[DllImport("user32.dll")]
static extern bool EnableMenuItem(IntPtr hMenu, uint uIDEnableItem, uint uEnable);
const uint SC_MOVE = 0xF010; //移动
const uint SC_CLOSE = 0xF060;//关闭
const uint MF_BYCOMMAND = 0x00; //按命令方式
const uint MF_GRAYED = 0x01; //灰掉
const uint MF_DISABLED = 0x02; //不可用
private void Form1_Load(object sender, EventArgs e)
{
IntPtr hMenu = GetSystemMenu(this.Handle, false); //获取程序窗体的句柄
if (hMenu != IntPtr.Zero)
{
DeleteMenu(hMenu, SC_MOVE, MF_BYCOMMAND); //删除移动菜单,禁用移动功能
EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND | MF_GRAYED | MF_DISABLED); //禁用关闭功能
}
}
分享到:
相关推荐
通过windows API禁用、启用窗体的关闭按钮,防止不小心点击X号或右键关闭按钮而关闭程序
本文介绍在C#窗体编程时,如何设置不显示右上角的最小化最大化关闭按钮。可以通过this.ControlBox这个属性的值来控制。 在Windows的窗体编程中,基本上每一个窗体都是一个最小化、最大化和关闭按钮的。见惯了...
可以伸缩/展开的C#版窗体菜单,类似Windows的开始-程序菜单一样,最先显示最常用的菜单项,点击下拉箭头会显示出全部的菜单项,本例和这种效果非常相似,这是基于C#2005版的,这个功能还算很实用哦。
通过窗体的菜单或按钮,并利用C#进程组件,启动/关闭一个office或Windows OS程序
摘要:C#源码,菜单窗体,禁止关闭窗口 禁用窗体上的关闭按钮,或者说是禁止关闭程序,因为即便不点击窗体右上角的关闭按钮,而从任务栏右键中关闭,同样是不能关闭窗口,那么只有通过任务管理器中的“结束程序”来...
代码示例演示如何自定义 DataGridViewButtonCell 类来显示可以显示为禁用的按钮。 本示例定义一个新的单元格类型 DataGridViewDisableButtonCell,它由 DataGridViewButtonCell 派生。 此单元格类型提供一个新的 ...
Form子窗体MyChild的应用,创建多文档窗体C#源代码//使用当前时间指示活动窗体标题 foreach( Form MyChild in this.MdiChildren ) { if (this.ActiveMdiChild == MyChild) { MyChild.Text=DateTime.Now.ToString...
MWArray资源,C#开发,建立windows窗体应用程序
C#调用API控禁用键盘鼠标,锁屏,禁用资源管理器
TCP/IP控制台进行通信的VS程序 C#程序 一个是客户端,一个是服务端,客户端和服务端可以互相发信息的小案例
C# API窗体最前
C# 使用AnimateWindow在屏幕右下角弹出窗体,被弹出的窗体可接收参数: 1、窗体标题 2、窗体内容:内容可显示链接,点击链接打开默认浏览器。内容超出窗体显示区域高度自动出现滚动条 3、窗体状态栏信息,默认是时间...
C#操作窗体的系统菜单C#操作窗体的系统菜单C#操作窗体的系统菜单C#操作窗体的系统菜单C#操作窗体的系统菜单
C#界面编程C#界面编程 非常好!C# 应用程序 窗体美化界面编程
本程序实现了禁用窗体上的关闭按钮,需要的朋友请看
c#仿vista风格窗体 public class CommonClass { //这个API作用是获取窗口的属性 [DllImport("user32.dll", EntryPoint = "GetWindowLong", CharSet = CharSet.Auto)] static extern int GetWindowLong...
这个程序用C#语言编写,有全部源代码,通过类和对象显示从窗体的程序。
C#分割窗体C#分割窗体C#分割窗体C#分割窗体C#分割窗体C#分割窗体
让C#窗体中的控件、按钮以及菜单等随窗体的大小变化而变化,在Word中,大家会见到,当Word的窗体不是最大化的时候,那些操作按钮会自动隐藏起来,用箭头来代替,点击箭头会显示出被隐藏的按钮,那么这个窗体就实现...
设置程序窗体在桌面上的位置和调整程序窗体的尺寸大小的实例,C#源代码this.DesktopLocation = new Point(50, 100);this.Size = new Size(100, 500); VisualStudio2008创建