zoukankan      html  css  js  c++  java
  • 向园子里的朋友探讨一个问题:如果判定一个对象已被处置

    先来贴代码:
    Form1
    namespace SunnyCMS.Archives.UI
    {
        
    public partial class Form1 : Form
        
    {
            
    private Form2 f;

            
    public Form1()
            
    {
                InitializeComponent();
                f 
    = new Form2();
            }


            
    private void button1_Click(object sender, EventArgs e)
            
    {
                f.Show();
            }

        }

    }

    Form2
    public partial class Form2 : Form
        
    {
            
    public Form2()
            
    {
                InitializeComponent();
            }
            
        }
    Form2.Designer
    namespace SunnyCMS.Archives.UI
    {
        
    partial class Form2
        
    {
            
    /// <summary>
            
    /// 必需的设计器变量。
            
    /// </summary>

            private System.ComponentModel.IContainer components = null;

            
    /// <summary>
            
    /// 清理所有正在使用的资源。
            
    /// </summary>
            
    /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>

            protected override void Dispose(bool disposing)
            
    {
                
    if (disposing && (components != null))
                
    {
                    components.Dispose();
                }

                
    base.Dispose(disposing);
            }


            
    Windows 窗体设计器生成的代码

        }

    }

    第一次打开Form2正确,第二次就会错误提示,Form2已处置。

    当然button1_Click代码修改为:

    private void button1_Click(object sender, EventArgs e)
            
    {
                
    if (f.IsDisposed)
                
    {
                    f 
    = new Form2();
                    f.Show();
                }

            }
    问题也就可以解决,我的问题是不访问IsDisposed属性,也不能修改Form2的Dispose方法,Form必须在Form1构造函数中初始化,我们可以通过何种方法判段Form2已被处置。也就是说必须寻找其他的解决方法。

    希望各位朋友提供各自的方案。
  • 相关阅读:
    Linux c 获取cpu使用率(2)
    Linux c codeblock的使用(四):创建自己的静态函数库
    Linux c codeblock的使用(三):使用函数库
    Linux c codeblock的使用(二):在工程中编译多个文件
    Linux c codeblock的使用(一):新建一个工程
    关于warning: suggest parentheses around assignment used as truth value [-Wparentheses]|的解决方法
    Linux c使用gumbo库解析页面表单信息(三)
    Linux c获取任意路径的硬盘使用情况
    Linux c使用gumbo库解析页面表单信息(二)
    Linux c使用gumbo库解析页面表单信息(一)
  • 原文地址:https://www.cnblogs.com/eastjade/p/1058626.html
Copyright © 2011-2022 走看看