关闭winform表单并停止它´;执行

本文关键字:#180 执行 winform 表单 关闭 | 更新日期: 2023-09-27 18:01:32

我的所有表单都继承自基本表单("base"(。

在那里,当它初始化时,我调用一个名为"Acceso"(访问(的方法,该方法根据当前用户的访问权限返回true或false。

public Base()
    {
        InitializeComponent();
        Acceso();
    }
public void Acceso()
    {
        Type tipo = this.GetType();
        if (Metodos.Login.Acceso(tipo) == false)
        {
            WMessageBox.Show("Su usuario no posee los privilegios necesarios para acceder a esta ventana.", "Error", 2, false);
            this.Close();
            this.Dispose();
        }
    }

问题是,如果它返回false,表单就会完美地关闭,但之后我得到了一个异常。显然,表单会继续运行。我试图通过处理它来解决这个问题,但我也遇到了同样的问题。

如何终止表格?有什么方法可以阻止并销毁实例吗?

编辑:事实上,这是因为它想显示删除的表格。

form.Show();

我写这个问题是因为我认为它正在发生与另一种形式相同的事情

在该表单中,我有一个面板,用于加载UserControls。当我创建UserControl的实例并将其添加到面板时,我会将表单分配给UserControl中的form类型变量。这是因为如果用户在UserControl中遇到异常,我会执行form.Close((来关闭整个form.

这就是我如何加载UserControl(它在一个按钮中(:

 private void btn_Administracion_grupos_Click(object sender, EventArgs e)
    {
        Dispose_User_Control();
        ABM.frm_Administracion_Grupos administracion_grupos = new ABM.frm_Administracion_Grupos();
        administracion_grupos.form = this;
        pnl_UserControl.Controls.Add(administracion_grupos);
    }

administration_grupos是表单。

在Dispose_User_Control((中,我从面板中删除UserControl并对其进行处理:

public void Dispose_User_Control()
    {
        if (pnl_UserControl.Controls.Count > 0)
        {
            try
            {
                UserControl frm = (UserControl)pnl_UserControl.Controls[0];
                frm.Dispose();
            }
            catch
            {
            }
            pnl_UserControl.Controls.Clear();
        }
    }

然后,在FormClosing((事件中,我处理面板中的UserControl和表单.

private void frm_Configuracion_FormClosing(object sender, FormClosingEventArgs e)
    {
        Dispose_User_Control();
        this.Dispose();
    }

当我在UserControl中获得优异成绩时,我会这样做:

try
            {
                db.SaveChanges();
                WMessageBox.Show("Grupo guardado con éxito.", "Confirmación", 3, false);
            }
            catch(Exception excep)
            {
                Control.Mensajes_error.Error_transaccion(excep);
                form.Close();
            }

我点击它,然后合上表格(带面板的表格(。

但是在结束之后(表单不再显示(,我在UserControl内的代码行中得到了一个异常。这就是为什么我想要一种终止整个表单的方法

我得到的例外是在我使用数据网格视图的一行代码中。它只是说空引用。然后我如前所述,主窗体关闭,UserControls被释放,但它只是继续执行代码!

关闭winform表单并停止它´;执行

您可以使用Environment。该的退出方法