[C#]zamykanie drugiej formy

0

Witam,
W pierwszej formie:

AboutForm aboutform = new AboutForm();
private void button1_Click(object sender, EventArgs e)
        {
            aboutform.Show();          
        }

Mam problem bo po zamknieciu tej drugiej formy nie moge jej ponownie otworzyc;/
dostaje blad

Additional information: Nie można uzyskać dostępu do usuniętego obiektu.

PS. nie chce otwierac jako ShowModal!

0

Hej. W zależności od tego co chcesz uzyskać możesz to zrobić na 2 sposoby:

  1. Obsłyżyć zdarzenie Close formy AboutForm, żeby w momencie zamknięcia była tylko chowana
  2. zamiast:
AboutForm aboutform = new AboutForm();
private void button1_Click(object sender, EventArgs e)
        {
            aboutform.Show();          
        }

zrobić tak:

private void button1_Click(object sender, EventArgs e)
        {
            AboutForm aboutform = new AboutForm();
            aboutform.Show();          
        }
0

Dalej mam blad ;/

private void aboutForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.Visible = false;
        }

nic nie pomaga

0

A zrobiłeś tak jak napisał kolega wyżej?

private void button1_Click(object sender, EventArgs e)
        {
            AboutForm aboutform = new AboutForm();
            aboutform.Show();         
        }

Bo o to to, to większeg sensu nie ma

private void aboutForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.Visible = false;
        }
0

nie moge tak zrobic

private void button1_Click(object sender, EventArgs e)
        {
            AboutForm aboutform = new AboutForm();
            aboutform.Show();         
        }

poniewaz po ponownym otwarciu drugiego okna nie moge nic do niego dodawac z pierwszego tzn. klikajac na buttona w pierwszej formie nie wykrywa mi tego okna

0

Więc w takim razie

AboutForm aboutform = new AboutForm();
private void button1_Click(object sender, EventArgs e)
        {
            aboutform  =new AboutForm();
            aboutform.Show();         
        }
0

THx teraz jako tako dziala ;] [browar]

0
dark_astray napisał(a)

Więc w takim razie

AboutForm aboutform = new AboutForm();  // <---------- Y
private void button1_Click(object sender, EventArgs e)
        {
            aboutform  =new AboutForm();  // <---------- X
            aboutform.Show();         
        }

nie wiem po co, pewnie macie powod, ale X+Y wyglada dziwacznie..

0

zrób tak:

if (e.CloseReason == CloseReason.UserClosing)
            {
                e.Cancel = true;
                this.Hide();
            }

zamiast:

this.Visible = false;
0

no tak, bazowo pole aboutform powinno być nullem. A dlaczego instancja formy jest trzymana pod zmienna aboutform? Ponieważ autor coś chciał z nią robić. Tyle że ABoutBox ma chyba nieco inne przeznaczenie.
No i po drugie takim sposobem to bedziemy przetrzymywać tylko ostanio otwarte okno. Powinno być też jakieś zabezpieczenie przed utworzeniem ktoregoś takiego okna z kolei

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