您的位置:首页 > 编程语言 > VB

一行代码解决VB.NET中Dialog窗体销毁不刷新主窗体

2011-05-23 17:36 567 查看
ShowDialog是VB.NET中模式窗体的调用方式。

如果使用VB.NET中的ShowDialog()方法调用子窗体后,你会发现在VB.NET中模式窗体的性质和VB6中有一些不同。

窗体的位置会被记住,每次打开的位置会与你上次关闭窗体的位置相同。如果在子窗体里进行过循环赋值你会发现,如果在赋值前没有对数组进行清空动作,数组会不断被不断累计。

导致出现这些问题的原则是因为在VB.NET中,被ShowDialog出来的窗体关闭后实际只是被隐藏了,而没有被销毁。既并没有执行Dispose。

如果要彻底销毁模式窗体就需要在Close或是窗体关闭按钮中加入Dispose()方法。但是这样又会出现另一个问题,在模式窗体被销毁的时候,主窗体会被重画。看到的现象就是主窗体整体闪动了一下,这对于一些客户来说是不友好的。

直接Close窗体没有被彻底销毁,如果强制执行Dispose(),主窗体有会被刷新。真的没有一个两全其美的办法吗?

其实,办法是有的而且很简单。还是Close()方法,只是位置稍有不同。

示例:

主窗体mainFrm 、子窗体subFrm

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

subFrm.ShowDialog()
subFrm.Close()
End Sub


(程序在2010中编写,其他VS版本大家可以自己尝试一下是否会获取相同结果)

第四行的close()就实现了彻底销毁模式窗体的目的。办法很简单,大家可以自己尝试一下!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐