Foxtable(狐表)用户栏目专家坐堂 → 如何使窗口的关闭按钮不可用,最小化及最大化可用?


  共有22846人关注过本帖树形打印复制链接

主题:如何使窗口的关闭按钮不可用,最小化及最大化可用?

帅哥哟,离线,有人找我吗?
baoxyang
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23134 威望:0 精华:1 注册:2009/3/31 11:25:00
如何使窗口的关闭按钮不可用,最小化及最大化可用?  发帖心情 Post By:2010/11/24 1:53:00 [显示全部帖子]

如何使窗口的关闭按钮不可用,最小化及最大化可用及其它都可用?

谢谢指点!!


 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23134 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/11/24 8:42:00 [显示全部帖子]

OK!

 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23134 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/11/24 9:54:00 [显示全部帖子]

VS2008C#建立一个类库,在引用即可。

 internal static extern IntPtr GetSystemMenu(IntPtr hwnd, bool bRevert);
        [DllImport("user32.dll")]
        internal static extern int GetMenuItemCount(IntPtr hMenu);
        [DllImport("user32.dll")]
        internal static extern int RemoveMenu(IntPtr hMenu, int uPosition, int uFlags);
        [DllImport("user32.dll")]
        internal static extern int DrawMenuBar(IntPtr hMenu);

protected void CloseButtonEnable(IntPtr hWnd)
        {
            //  默认窗口去除关闭按钮 
            const int MF_BYPOSITION = 0x00000400;
            IntPtr hMenu = GetSystemMenu(hWnd, false);
            int count = GetMenuItemCount(hMenu);
            RemoveMenu(hMenu, count - 1, MF_BYPOSITION);
          //  RemoveMenu(hMenu, count - 5, MF_BYPOSITION);
            DrawMenuBar(hWnd);
        }
        public void CloseForm()
        {
            CloseButtonEnable(Foxtable.GlobalProperties.Forms["聊天窗口"].BaseForm.Handle);
        }


 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23134 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/11/24 13:38:00 [显示全部帖子]

以下是引用狐狸爸爸在2010-11-24 10:43:00的发言:

其实不用这么复杂的,自己在Foxtable的BeforeClose事件设置代码,判断某个Public全局变量的值,如果是True,则正常关闭,如果是False则取消关闭。

打开窗口将变量的值设置为False,在窗口加一个关闭按钮,按钮代码中将全局变量的值设置为True,这样可以通过此关闭按钮关闭窗口,直接通过窗口的关闭按钮则不可以。

 

加起来可以五行代码搞定:

 

全局代码:

public bbb As Boolean

 

窗口的AfterLoad事件:

bbb = True

 

窗口的Beforeclose事件:

e.cancel = not bbb

 

窗口的关闭按钮

bbb = True

e.Form.Close()

 

 

[此贴子已经被作者于2010-11-24 10:46:32编辑过]

 试过了,不行呀?那位狐友可以达到效果吗?

[此贴子已经被作者于2010-11-24 13:39:18编辑过]

 回到顶部