禁用窗体关闭按钮?

sdfsf双方各 2009-12-20 09:17:12
希望高人指点一下
...全文
849 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Arceibald 2009-12-21
  • 打赏
  • 举报
回复
把窗体选定按F4,ControBox的值改为为False.
Lucky_6Q 2009-12-21
  • 打赏
  • 举报
回复
路过,学习!
shighui 2009-12-21
  • 打赏
  • 举报
回复
恩,有理,没用过。
ErrorCode1987 2009-12-21
  • 打赏
  • 举报
回复
重写基方法WndProc
//捕捉关闭窗体消息
protected override void WndProc(ref Message m)
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_CLOSE = 0xF060;
if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
{
return;
}
base.WndProc(ref m);
}
cstester 2009-12-21
  • 打赏
  • 举报
回复
属性ControBox的值设置为False alt+F4 还是能关闭掉的。 要想真正的实现屏蔽,那就是e.cancel=true;
你妹的特盗不 2009-12-21
  • 打赏
  • 举报
回复
补充下,上面问题,我在xp下面发现的,在win7 程序会被系统强行关闭
cstester 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sl51314240 的回复:]
属性ControBox的值设置为False
[/Quote]


或者 在Closing事件里。 写 上

e.cancel=true;
你妹的特盗不 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zaiduxinling 的回复:]
借鉴李天平老师的方法
重写OnClosing方法
C# codeprotectedoverridevoid OnClosing(CancelEventArgs e)
{if(this.Visible)
{
e.Cancel=true;
}
}
[/Quote]
这样,如果程序运行着,关闭或重启系统,有没有问题????
因为系统要关闭这个程序,会发送关闭程序的消息,但程序是可见的,那么就会被程序放弃,系统在等程序关闭

我以前了是这样的,发现了这个问题
wartim 2009-12-21
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime .InteropServices ;

namespace WindowsApplication242
{
public partial class Form1 : Form
{
[DllImport("user32")]
static extern IntPtr GetSystemMenu(IntPtr hwnd, int bRevert);

[DllImport("user32")]
static extern int EnableMenuItem(IntPtr hMenu, int wIDEnableItem, int wEnable);

int MF_GRAYED = 1;
int MF_BYCOMMAND = 0;
int SC_CLOSE = 0xF060;

public Form1()
{
InitializeComponent();

EnableMenuItem(GetSystemMenu(this.Handle, 0),
SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);
}
}
}
outou 2009-12-21
  • 打赏
  • 举报
回复
同楼上相同,最多详细说明参照http://bingning.net/free/source/form/closingcancel.html

//窗体的FormClosing事件处理器
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (this.WindowState == FormWindowState.Maximized)
//最大化时不能关闭
e.Cancel = true;
}

让爱延续 2009-12-21
  • 打赏
  • 举报
回复
借鉴李天平老师的方法
重写OnClosing方法

protected override void OnClosing(CancelEventArgs e)
{
if(this.Visible)
{
e.Cancel=true;
}
}
jin20000 2009-12-20
  • 打赏
  • 举报
回复
恩,其实可以先禁用了所有的控制按钮,自己在重新加个最小最大化的按钮
  • 打赏
  • 举报
回复
还要提醒你一下,如上设置以后,发现窗体不能关闭了,怎么办?
可以另设置一个功能,将FormClosing事件取消,就是 += -=符号操作的
  • 打赏
  • 举报
回复
这个容易:
窗体的FormClosing在窗体将关闭而又没有关闭时发生
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel=true; 将此属性设置一下,意思就是丢弃此关闭事件不处理了
}
zhaojun125 2009-12-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
http://topic.csdn.net/u/20090419/18/970d8ad9-ed9a-4bd9-a623-81d23106545b.html
[/Quote]
刚看了楼上大大写的 貌似是在关闭窗体的时候弹对话框询问呃?
好像楼主是要禁用窗体的关闭按钮额
顺便俺也学习下了
云水千寻 2009-12-20
  • 打赏
  • 举报
回复
如果连其他按钮也不要的话,就把窗体的ControlBox属性设为
False;如果只禁用关闭按钮并保留其他按钮我就不知道了
期待高手
sl51314240 2009-12-20
  • 打赏
  • 举报
回复
属性ControBox的值设置为False

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧