Hoe kan ik de focus weer in vorm houden door op de OK-knop te klikken in Windows-formulieren?

Ik heb een Windows-formulier met meerdere bedieningselementen en de knoppen OK en Annuleren. In de gebeurtenisafhandeling Click van de knop OK controleert deze of er fouten in het formulier staan. Ik heb het formulier nodig om open te blijven als er fouten zijn. Maar de onderstaande code werkt niet. Als er fouten zijn, wordt het formulier gesloten en wordt teruggekeerd naar de beller. En ik heb de onderstaande twee regels om de vorm aan te roepen en weer te geven.

PtForm paymentForm = new PtForm();
ptForm.ShowDialog();

private void btnOk_Click(object sender, EventArgs e)
    {
        this.ValidateChildren(ValidationConstraints.Visible);
        string ErrorString = GetValidationErrors();
        MessageBox.Show(ErrorString, "Errors");

        if (!string.IsNullOrEmpty(ErrorString))
        {
            return;
        }

//Processing

}

Bedankt voor alle hulp.

1
Stel de this.DialogResult-eigenschap opnieuw in op Geen.
toegevoegd de auteur Hans Passant, de bron

2 antwoord

Er is niets in deze code dat het formulier zal sluiten. Daarom moet de schuldige buiten deze code vallen.

Heeft u de DialogResult van uw OK-knop ingesteld? eigendom van DialogResult.OK? Dat zou verklaren waarom het formulier wordt gesloten. AFAIK, als je DialogResult op de knop zet, gebeurt dat - er is geen manier om het in code te veto.

Dus in dat geval moet je teruggaan naar de ontwerper en de DialogResult van de knop terugzetten op Geen. Aan het einde van uw btnOk_Click methode, nadat u alle invoer hebt gevalideerd en hebt besloten dat het veilig is om het dialoogvenster te sluiten, voegt u een regel toe waarmee de DialogResult-eigenschap van uw formulier wordt ingesteld op OK.

3
toegevoegd
Dank u zeer. Dit loste mijn probleem op.
toegevoegd de auteur Jyina, de bron

DialogResult-eigenschap van een knop verwijderen-d.w.z. zet het op Geen.

1
toegevoegd
Dank u zeer.
toegevoegd de auteur Jyina, de bron