2012-12-24 14 views
5

Mam dwa formularze w mojej aplikacji. Oni sposób wzywam Form 2 jest tak:Formularz się zamyka, gdy nie powinien być

Forma 1:

private void btnTest_Click(object sender, EventArgs e) 
{ 
    DialogResult result = new System.Windows.Forms.DialogResult(); 
    Add_Link addLink = new Add_Link(); 
    result=addLink.ShowDialog(); 

    if (result == System.Windows.Forms.DialogResult.OK) 
    { 
     // 
    } 
} 

Forma 2:

private void btnAdd_Click(object sender, EventArgs e) 
{    
    if(validURL(txtSubLink.Text)) 
    { 
     HyperLink add = new HyperLink(txtSubLink.Text,txtSubText.Text,"URL"); 
     this.build = add;     
    } 
    else 
    { 
     MessageBox.Show("Valid URL Needed! " + txtSubLink.Text, "ERROR"); 
    }    
} 

Mój problem jest wtedy, gdy użytkownik kliknie przycisk Add, na wyświetlaczu komunikat o błędzie (bo dane są nieprawidłowe lub pola tekstowe są puste) ALE to zamyka formularz. Chcę tylko, aby użytkownik zamknął formularz i przekazał dane, jeśli te dwa pola tekstowe zawierają właściwe dane. Jeśli oba pola tekstowe nie zawierają poprawnych danych, jest puste, gdy użytkownik kliknie przycisk Dodaj, powinien pojawić się komunikat o błędzie, a kod Form 2 powinien pozostać otwarty. Jak mogę to zrobić ...?

+1

nie widzę kod, który wywołuje zamknięcie formularz ... Jestem zdziwiony – miniBill

+0

@miniBill - w pierwszym, jeśli oświadczenie o postaci 2 zamyka go niezależnie lub błąd czy nie. –

Odpowiedz

8

Podejrzewam, że Twoja btnAdd ma ustawioną właściwość DialogResult na OK. Wyłącz to, a następnie dodaj this.DialogResult = DialogResult.OK do programu obsługi zdarzeń, gdy jesteś zadowolony z danych wejściowych.

private void btnAdd_Click(object sender, EventArgs e) 
{ 

    if(validURL(txtSubLink.Text)) 
    { 
     HyperLink add = new HyperLink(txtSubLink.Text,txtSubText.Text,"URL"); 
     this.build = add; 
     this.DialogResult = DialogResult.OK; 

    } 
    else 
    { 
     MessageBox.Show("Valid URL Needed! " + txtSubLink.Text, "ERROR"); 
    } 

} 
+0

Nieważne, twoje prawo. Wprowadziłem this.btnAdd.DialogResult = System.Windows.Forms.DialogResult.OK, zamiast tego.DialogResult = DialogResult.Ok. Teraz działa. Dzięki –

Powiązane problemy