主题:[讨论]高级WindosForm窗体编程
新手老胡
[专家分:0] 发布于 2007-05-13 09:55:00
我现在创建了一个窗体对象fomr1
并且添加一个按钮用于控制关闭此窗体,并且此为唯一关闭form1的途径
问题:怎么阻止组合按钮Alt+F4 关闭当前窗体对象form1
补充:最好介绍详细点,因为解决这个问题所涉及到的类,应该是我不熟悉的,谢了[em1][em1]
回复列表 (共2个回复)
沙发
jzyray [专家分:20610] 发布于 2007-05-13 14:12:00
其实这个问题是当年VB讨论区中经常碰到的
给你找个代码(VB):
Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Const MF_BYPOSITION = &H400&
在要移除“×”的窗体的form_load中:
hSysMenu = GetSystemMenu(Me.hwnd, 0)
Call RemoveMenu(hSysMenu, 5, MF_BYPOSITION)
Call RemoveMenu(hSysMenu, 6, MF_BYPOSITION)
解决思路就是:
去除系统菜单中的“关闭”命令(也可以去除那个分割线)
GetSystemMenu和RemoveMenu这两个API函数可以通过P/Inovke使用
Me.hwnd改成this.Handle即可
其它类似
板凳
缘来654 [专家分:90] 发布于 2007-05-16 23:01:00
阻止组合按钮Alt+F4 关闭当前窗体对象form1(刚学的):
1。将窗体的属性KeyPrieview设置为true
2。在窗体KeyDown事件中加如下代码
private void FormVali_KeyDown(object sender,System.Windows.Forms.KeyEventArgs e)
{
//屏掉alt+f4
if ((e.KeyCode == Keys.F4)&&(e.Alt == true))
{
e.Handled = true;
}
}
至于还有阻止Ctrl+Alt+Del组合键,我就不会弄了。
我来回复