Fórum
Ver pergunta

v10 CustomForm FormClosing   

224 visualizações
1
0

Boa tarde,

Estou a chamar uma custom form dentro do evento button clicked da PriGrelha da seguinte forma:

using (var result1 = BSO.Extensibility.CreateCustomFormInstance(typeof(IndicadoresAux)))
                        {
                            var form = (result1.Result as IndicadoresAux);
                           form.ShowDialog();
                        }

Depois ao fechar a form tenho tenho o seguinte método :

private void IndicadoresAux_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (needSave || linhaRemovida)
            {
                StdBSTipos.ResultMsg result = PSO.Dialogos.MostraMensagem(StdBSTipos.TipoMsg.PRI_SimNao,
                    "Tem alterações por gravar, deseja gravar ?", StdBSTipos.IconId.PRI_Questiona,
                    iBtDefeito: 0);
                if(result.Equals(StdBSTipos.ResultMsg.PRI_Sim))
                {
                    SaveRowsLines();
                }
                else
                {
                    if (result.Equals(StdBSTipos.ResultMsg.PRI_Cancelar))
                    {
                        e.Cancel = true;
                    }
                }
            }
            
        }

Queria que ao fechar o dialogo (clicar na cruz) a customform ficasse aberta a mesma. Fazendo debug ele chega ao e.Cancel mas continua e fecha a form. Isto é um bug ou é por estarmos num cenário MDI?

 

Obrigado,

Faça login para poder traduzir
V10
Marcado como spam
Criado há 5 anos e 4 meses joomota
j
joomota Iniciante
Comentários
Isso é bug.
5 anos e 4 meses
sergiosereno
    @sergiosereno Deparei-me com esta mesma situação e mantem-se o bug, coloco "e.Cancel=true;" no evento FormClosing do CustomForm mas o form é sempre fechado. Pode confirmar pf? obrigado
    4 anos e 2 semanas
    nunosoares
      2 respostas
      1
      Resposta privada

      private bool HasAlreadyClosed = false;

      private void FDU_Form_Shown(object sender, EventArgs e)
      {
      ((StdPlatBS100.frmStdBaseForm)this.ParentForm).FormClosing += FDU_FormClosing_Custom;
      }

      private void FDU_FormClosing_Custom(object sender, FormClosingEventArgs e)
      {

      if (!HasAlreadyClosed)
      {
      e.Cancel = true;
      HasAlreadyClosed = true;
      }
      }

      Consegui colocar a funcionar assim

      Faça login para poder traduzir
      Marcado como spam
      Criado há 3 anos e 10 meses nunovidal
      nunovidal Iniciante
        0
        Resposta privada

        Boas @joomota, chegou a encontrar solução para este problema?

        Obrigado

        Faça login para poder traduzir
        Marcado como spam
        Criado há 4 anos e 1 semana nunovidal
        nunovidal Iniciante