微信小程序按钮禁止设置方法
关于小程序按钮的操作,有很多隐藏的小程序功能,今天要为大家介绍的是微信小程序按钮禁止怎么设置,希望大家看完以下流程之后都能操作成功。
一般情况下,在窗体的右上角都有最大化、最小化和关闭按钮,丹在MDI窗体中,有事为了避免重复打开同一个窗口,需要禁用窗口上面的“关闭”按钮,本实例就实现了这样的功能。
说道禁用、有的人会说:直接在FormClosing处理不就得了:
1 ///
2 /// 窗体关闭时的事件
3 ///
4 private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
5 {
6 e.Cancel = true; // 取消关闭操作
7 }
当然,这样可以,但是我们的目标是实现如下图所示的禁用+变灰:
运行效果如图所示:
很神奇吧、我们知道最大化最小化按钮时可以禁用的、但是关闭按钮怎么禁用呢?请看下面的制作过程:
【关键技术】
本实例主要用到了窗口处理方法WndProc的重写方法,在该方法的内部截获单击关闭窗口的消息,从而实现禁用“关闭”按钮的功能。
使用GetSystemMenu()和EnableMenuItem()使“关闭”按钮变灰色、
其它事件的使用等等。
WndProc方法主要用来处理Windows消息,语法格式如下:
1 [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
2 [SecurityPermissionAttribute(SecurityAction.InheritanceDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
3 protected virtual void WndProc(ref Message m);
[注:详细的函数说明请参见源码中的备注说明。]
【设计过程】
(1)打开Visual Studio,新建WinForm应用程序,将其命名为StopCloseButton。
(2)定义以下成员变量及API声明:
1 private const int SC_CLOSE = 0xF060; //定义关闭按钮对应的消息值
2 private const int MF_ENABLED = 0x00000000; //禁用
3 private const int MF_GRAYED = 0x00000001; //变灰
4 private const int MF_DISABLED = 0x00000002; //禁用
5 private const int WM_SYSCOMMAND = 0x0112; // 定义要截获的消息类型
6
7 [DllImport("user32.dll", EntryPoint = "GetSystemMenu")]
8 private static extern IntPtr GetSystemMenu(IntPtr hWnd, int bRevert);
9
10 [DllImport("User32.dll")]
11 public static extern bool EnableMenuItem(IntPtr hMenu, int uIDEnableItem, int uEnable);
(2)重写WndProc方法、实现当用户点击“关闭”按钮时无反应的效果:
1 ///
2 /// 重写WndProc方法、实现当用户点击“关闭”按钮时无反应的效果
3 ///
4 /// 要处理的Windows消息
5 protected override void WndProc(ref Message m)
6 {
7 if ((m.Msg == WM_SYSCOMMAND) && (int)m.WParam == SC_CLOSE) // 当鼠标单击“关闭”按钮时
8 {
9 return; // 不进行任何处理 直接返回
10 }
11 base.WndProc(ref m); // 传递下一条消息
12 }
(3)先别急着运行、因为那样除了结束进程是关不掉的、
所以、给自己留一条后路:放一个按钮、用于退出、在按钮的Click事件中写上退出程序的方法:
1 private void button1_Click(object sender, EventArgs e)
2 {
3 Application.Exit();
4 }
(4)运行后发现,确实“关闭”按钮不能点击了、但是、他也没有变灰色啊、
那是因为我们还没有调用EnableMenuItem()呢:
在窗体的构造或Load事件中调用GetSystemMenu()和EnableMenuItem()函数以达到变灰“关闭”按钮的效果:
1 private void FrmMain_Load(object sender, EventArgs e)
2 {
3 IntPtr hMenu = GetSystemMenu(this.Handle, 0); //得到关闭按钮
4 EnableMenuItem(hMenu, SC_CLOSE, (MF_DISABLED + MF_GRAYED) | MF_ENABLED); //设置样式(参数可自定义)
5 }
(5)到此,这个小程序就已经实现完毕了,细心的人会发现以下的小Bug:
虽然“关闭”按钮已经禁用了、但是、当你点击以下最大化后、虽然关闭按钮依旧不能用、但是灰色效果消失了、
那么解决的方案就是禁用掉最大化最小化按钮、(*^_^*)、
或者在窗体状态改变的事件里面再次调用以下变灰的函数即可。
微信小程序按钮禁止的开发和设置还是挺实用的,参照以上资料,如果还有不了解的部分,欢迎大家进行留言和小编探讨哦,想要获取更多相关资料请关注微信小程序素材网。
微信小程序按钮怎么分享?
微信小程序怎么点击按钮修改文字大小?
微信小程序按钮颜色怎么改变?
上一篇:微信小程序按钮居中怎么弄
下一篇:微信小程序导航栏返回怎么弄