Windows窗体的窗体和文本框之间的Dispose方法的行为差异

mah*_*esh 6 visual-studio

每当我Dispose在Windows Forms表单(从System.Windows.Forms.Form派生)上调用该方法以将其关闭时,该Dispose方法都会通过释放资源并处理该表单来最终确定。

我有类似文本框的运行时对象,如下所示:

Textbox Tb = new Textbox();
Run Code Online (Sandbox Code Playgroud)

用户可以动态创建新的文本框。我想要这样,以便删除那些包含数据的文本框,并删除那些为空的文本框。当我Dispose在空的文本框中调用该方法时,在运行时看起来好像它们已被废弃,但通常它们只是不可见的。

所以:

  1. 在文本框上调用dispose方法与从Forms派生的类之间有什么区别?

  2. 为什么在调用eg时放置了一个Form Form1.Dispose();,为什么在运行时不按以下方式放置文本框?

    if (tb.text=="")
        tb.Dispose();
    
    Run Code Online (Sandbox Code Playgroud)

MPe*_*ier 1

据我了解,这是因为所有权。表单拥有控件,因此如果您处理掉这些控件,没问题,您只需要刷新它即可。如果您处理掉表单本身,它就会消失,无需刷新。