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
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 ...