zoukankan      html  css  js  c++  java
  • 一行代码解决VB.NET中Dialog窗体销毁不刷新主窗体

    ShowDialog是VB.NET中模式窗体的调用方式。

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

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

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

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

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

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

    示例:

    主窗体mainFrm 、子窗体subFrm

    1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2
    3 subFrm.ShowDialog()
    4 subFrm.Close()
    5  End Sub

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

    第四行的close()就实现了彻底销毁模式窗体的目的。办法很简单,大家可以自己尝试一下!

    我来自:向东博客
  • 相关阅读:
    Django动态下载文件
    单反学习
    网页开发
    从一堆数中随机取出一些值的方法
    C/C++使用HTTP协议上传
    django 初级(一) 配置与周边
    c++11
    外观模式
    sqlite
    linux程序设计1
  • 原文地址:https://www.cnblogs.com/meil/p/Showdialog.html
Copyright © 2011-2022 走看看