如何在事件中处置打开的UserControl?

时间:2016-07-05 09:53:44

标签: c# winforms devexpress

我正在使用winforms。

我有一个处理其UserControl

的函数

当我点击标签时,我曾经称它为正常工作(仍然如此)。 现在增加了一个devexpress控件,它像以前一样处理它自己的控件。 我调用与标签相同的函数,但在事件结束后,我得到一个空指针执行,我创建我的Mainform(它没有放置在任何地方)。

我在这里缺少什么。我认为破坏自己的用户控件是有问题的,但是为什么单击标签时这样做,而不是当我点击其他用户控件时?任何人都可以给出解释或解决方案吗?谢谢!

private void DoDispose()
{
   this.Dispose();
}

private void breadCrumbEdit1_Properties_NodeClick(object sender, BreadCrumbNodeClickEventArgs e)
{
   DoDispose();
}

private void label1_MouseClick(object sender, MouseEventArgs e)
{
   DoDispose();
}

1 个答案:

答案 0 :(得分:1)

您在Dispose()上呼叫this,在这种情况下,它将是父表单。

假设您正在传递Control个对象,请更改您的代码;

public void DoDispose(object control)
{
    ((Control)object).Dispose();
}

调用DoDispose(sender)

现在,您在作为参数传递的对象上调用Dispose(),而不是父窗体。