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()就实现了彻底销毁模式窗体的目的。办法很简单,大家可以自己尝试一下!

    我来自:向东博客
  • 相关阅读:
    使用OpenCV进行相机标定
    近景摄影测量
    vmware安装操作系统
    mac下使用gnu gcc
    Collection of Boot Sector Formats for ISO 9660 Images
    java会不会出现内存泄露
    difference between http get and post
    Apache许可翻译
    项目持续集成工具
    常用的地图投影算法
  • 原文地址:https://www.cnblogs.com/meil/p/Showdialog.html
Copyright © 2011-2022 走看看