为什么我的窗口关闭不了?谢谢

yuxuan 2002-12-16 06:17:49
问题描述:
我在窗口中调用了User Control,当我用窗口上的X关闭窗口,却没有反应,自己定义的关闭按钮,代码如下:
me.close()
me.dispose()
一切正常,可以关闭

问题提出:
为什么窗口上的X,不能释放用户控件?有没有解决办法?请大侠关注,谢谢!
...全文
205 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
NaZiChong 2002-12-31
  • 打赏
  • 举报
回复
你所说的问题在我的机器上并不存在!
我在窗体里加了一个用户控件,按“X”是可以关闭的呀!


》我在User Control中加了一个按钮,写上me.dispose就可以了。

那再加一行代码:
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Dim SC_CLOSE As Integer = 61536
Dim WM_SYSCOMMAND As Integer = 274

If m.Msg = WM_SYSCOMMAND AndAlso m.WParam.ToInt32 = SC_CLOSE Then
usercontrol1.dispose()
Me.Dispose(True)
End If
MyBase.WndProc(m)
End Sub

另外,需要指出的是“我在User Control中加了一个按钮,写上me.dispose就可以了。”是释放掉usercontrol,并不释放窗体。
你的问题我还是没有能完全理解!
如果还是不行,请把你的代码贴出来!
yuxuan 2002-12-30
  • 打赏
  • 举报
回复
TO :NaZiChong(ZiChong)
我按照你的方法,把上面的代码加进去,还是不行

我在User Control中加了一个按钮,写上me.dispose就可以了。

为什么X不执行关闭事件?
NaZiChong 2002-12-30
  • 打赏
  • 举报
回复
针对这个问题,一个可行的解决方法是在Form1里重载WndProc函数,手工处理点击"X"按钮的事件,即在Form1中添加如下代码:

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Dim SC_CLOSE As Integer = 61536
Dim WM_SYSCOMMAND As Integer = 274

If m.Msg = WM_SYSCOMMAND AndAlso m.WParam.ToInt32 = SC_CLOSE Then
Me.Dispose(True)
End If
MyBase.WndProc(m)
End Sub

这样就能够让用户在点击"X"按钮的时候关闭窗口了。

希望以上内容对你有所帮助!
yuxuan 2002-12-30
  • 打赏
  • 举报
回复
请问X触发哪个事件

为什么我跟踪不到?
yuxuan 2002-12-28
  • 打赏
  • 举报
回复
为什么高手不现身呢?
shinhwa1028 2002-12-28
  • 打赏
  • 举报
回复
dispose实现是调用释放,X只是调用了hide方法
QQRN 2002-12-28
  • 打赏
  • 举报
回复
一般来说,在控件的dispose代码中把调用到的对象释放,在调用控件的窗体CLOSE时候,把该控件也设为NOTHING,再关闭,如果你重写对应的事件,最好执行一下原先的事件,如MYBEST。ONRESIZE等
ksy 2002-12-28
  • 打赏
  • 举报
回复
从没遇到过,帮你UP一下。
yuxuan 2002-12-19
  • 打赏
  • 举报
回复
TO:yinson()
可以具体点吗?谢谢
yuxuan 2002-12-19
  • 打赏
  • 举报
回复
to yinson() :有解决办法吗?
yinson 2002-12-19
  • 打赏
  • 举报
回复
因 User Control 不是一个 Form, 不能用 me.close 来关闭
eg.
form1 是一个窗体, form2 是一个 User Control

在 form1 中 引用 form2 和关闭 form2
而不能正 form2 中关闭自身
renguangdong 2002-12-19
  • 打赏
  • 举报
回复
关注
yinson 2002-12-18
  • 打赏
  • 举报
回复
因为你调用的是 User Control. 在打开这个 User Control 的窗口内关闭这个 User Control
yuxuan 2002-12-18
  • 打赏
  • 举报
回复
高手在哪里?救救我
yuxuan 2002-12-17
  • 打赏
  • 举报
回复
高手都吃饭去了吗?
yuxuan 2002-12-17
  • 打赏
  • 举报
回复
to:Montaque(Rainman)

在dispose代码中,把所有申明到的对象,都结束调,设置未nothing

还是不行,请高手指教!在线等待。。。
hongshun 2002-12-17
  • 打赏
  • 举报
回复
关注 ,以前我们也会遇到这个错误。 很奇怪,

好像 界面上 的 X 不在触发 Closing 事件了 。

期望高手 回答。

在dispose代码中,把所有申明到的对象,都结束调,设置未nothing

??

是把窗体的控件手工的 nothing ? 出这种错误的可能原因是什么??
Montaque 2002-12-17
  • 打赏
  • 举报
回复
在dispose代码中,把所有申明到的对象,都结束调,设置未nothing
yuxuan 2002-12-17
  • 打赏
  • 举报
回复
我在CLOSING的事件写了
me.dispose
可是我跟踪调试却不能运行到这一步,怎么回事?谢谢,急!
ok1 2002-12-16
  • 打赏
  • 举报
回复
你试一下在CLOSING的事件里写
me.dispose
应该就可以释放的
加载更多回复(3)

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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