[Wyjątki] Przechwycenie wyjątku z innej formy

0

Problem polega na przechwytywaniu wyjątków generowanych w innej formie. Załóżmy, że w Form1 mam kod: Form2.Show(). Po pojawieniu się Form2 wykonuję w niej jakieś akcje i generowany jest wyjątek. W jaki sposób mogę przerzucić ten wyjątek do pierwszej formy i tam go obsłużyć?

0

Witam,
możesz to zrobić przy pomocy event-u. Przykład:
Kod w klasie Form1:

        private void button_Click(object sender, EventArgs e)
        {        
            Form2 f = new Form2();
            f.ExceptionAppear += new ExceptionAppearDelegate(f_ExceptionAppear);
            f.Show();
        }

        void f_ExceptionAppear(Exception exc)
        {
            Console.WriteLine(exc.Message.ToString());
        }

Kod w klasie Form2:

    public delegate void ExceptionAppearDelegate(Exception exc);

    public partial class Form2 : Form
    {
        public event ExceptionAppearDelegate ExceptionAppear;

        public Form2()
        {
            InitializeComponent();
        }

        private void button_Click(object sender, EventArgs e)
        {
            try
            {
                throw new Exception("tralalalala");
            }
            catch (Exception exc)
            {
                if (ExceptionAppear != null)
                    ExceptionAppear(exc);
            }
        }
    }

Czyli jeśli w okienku Form2 wystąpi wyjątek, okienko Form1 wypisze na konsole komunikat wyjątku.

Nie wiem czy to jest najlepszy pomysł na rozwiązanie twojego problemu, ale zawsze coś ;)

Pozdrawiam

0

Pokaż drugą formę przez ShowModal, jeśli możesz (jeśli pokażesz przez ShowModal pierwsza forma będzie niedostępna):

try
{
   Form2.ShowModal();
}
catch ...

1 użytkowników online, w tym zalogowanych: 0, gości: 1