繁体   English   中英

无法访问我的C#Winform中的已处置对象异常

[英]cannot access a disposed object exception in my c# winform

我有一个简单的c#winform,它使用报表查看器显示报表。 我的表格如下

    private void member_Search_Load(object sender, EventArgs e)
    {
        this.WindowState = FormWindowState.Maximized;
        if (key1 == "index")
        {
            try
            {
                this.report_membersTableAdapter.Fill(this.DataSet2.report_members, key1, "", value1, DateTime.Now, DateTime.Now);
                this.reportViewer1.RefreshReport();
            }
            catch (Exception ex) {
                MessageBox.Show("mbr_srh::ind" + ex.Message);
            }
        }
        if (key1 == "name")
        {
            try
            {
                this.report_membersTableAdapter.Fill(this.DataSet2.report_members, key1, value1, "", DateTime.Now, DateTime.Now);
                this.reportViewer1.RefreshReport();
            }
            catch (Exception ex) {
                MessageBox.Show("mbr_srh::nam"+ex.Message);
            }
        }
        if (key1 == "library")
        {
            try
            {
                this.report_membersTableAdapter.Fill(this.DataSet2.report_members, key1, "", "", d11, d22);
                this.reportViewer1.RefreshReport();
            }
            catch (Exception ex) {
                MessageBox.Show("mbr_srh::lib" + ex.Message);
            }
        }
        if (key1 == "school")
        {
            try
            {
                this.report_membersTableAdapter.Fill(this.DataSet2.report_members, key1, "", "", d11, d22);
                this.reportViewer1.RefreshReport();

            }
            catch (Exception ex) {
                MessageBox.Show("mbr_srh::sch" + ex.Message);
            }
        }


    }

    public void set(string key, string value)
    {
        key1 = key;
        value1 = value;
        this.Show();
    }
    public void Setdate(string key, DateTime d1, DateTime d2)
    {
        key1 = key;
        d11 = d1;
        d22 = d2;
        this.Show();
    }

    private void reportViewer1_Load(object sender, EventArgs e)
    {

    }


}

}`

我可以第一次调用set()setdate()函数,但是当我第二次调用上述函数时,它给了我一个异常cannot access a disposed object exception:object name:member_search ,突出显示this.Show()set()setdate()函数,有人可以帮我解决这个问题吗?

如果关闭表格,它将被处置。

  1. 开始调试(F5)
  2. 在方法member_Search_Load的开头设置一个断点(F9)
  3. 逐步浏览每行(F10),调查每个使用的变量的值

据我所知,您确实可以从主表单中打开报告表单。 然后查看您的报告并关闭报告表格。 即使您在主表单中拥有报表表单的变量,也可以通过单击叉形关闭报表表单,然后将其丢弃。 因此,您必须先创建一个新的报告表单,然后才能再次显示它。

如果要避免这种情况,则必须使用member_SearchForm.Hide()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM