Comment valider les éléments de dialogue .NET lors de l'utilisation de DialogResult automatique?

StackOverflow https://stackoverflow.com/questions/269390

  •  06-07-2019
  •  | 
  •  

Question

Pour le moment, j'ai configuré un dialogue d'annulation personnalisé avec un menu déroulant en c #. Les boutons ok et cancel utilisent la propriété DialogResult afin qu'il n'y ait pas de code derrière celle-ci. Ce que je dois maintenant faire, c'est valider le menu déroulant pour vérifier qu'il n'est pas laissé vide avant de poster un résultat de dialogue.

Est-ce possible?

Était-ce utile?

La solution

De ici

Double-cliquez sur le champ Fermeture et implémentez-le comme suit:

private void Second_Closing(object sender, 
        System.ComponentModel.CancelEventArgs e)
{
    // When the user attempts to close the form, don't close it...
    e.Cancel = (dropdown.selecteditemindex >= 0);
}

Autres conseils

Désactivez le bouton OK jusqu'à ce que la liste déroulante soit remplacée par une valeur valide.

Si vous voulez vérifier quelque chose, vous avez toujours besoin de code derrière le concepteur. Dans votre cas, vous pouvez utiliser l'option "Clôture". Dans le formulaire, vérifiez ce dont vous avez besoin et, si vous le souhaitez, définissez " e.Cancel = true; " - alors le formulaire ne sera pas fermé.

Ce que j'ai fait pour cela est de ne pas définir le paramètre DialogResult sur le bouton OK, mais de mettre du code derrière le bouton.

private void OkButton_Clicked(object sender, EventArgs e)
{
    this.DialogResult = ValueComboBox.SelectedIndex >= 0
        ? DialogResult.Ok
        : DialogResult.None;
}

Vous pouvez continuer à utiliser les fonctionnalités des boutons OK et Annuler des boîtes de dialogue, puis placer ce code dans le gestionnaire Cliqué pour le bouton OK:

private void OkButton_Clicked(object sender, EventArgs e)
{
    if (!IsValid()) {
        this.DialogResult = System.Windows.Forms.DialogResult.None;
    }
}

Dans le code ci-dessus, IsValid () est une méthode que vous devez implémenter, qui valide les champs de saisie de la boîte de dialogue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top