[C#] [.NET] InputBox Windows personnalisé


Introduction
Si votre application nécessite une InputBox pour capturer une entrée utilisateur, vous pouvez ajouter une référence à Microsoft.VisualBasic.dll dans votre projet et utiliser la méthode InputBox statique située dans l'espace de noms suivant Microsoft.VisualBasic.Interaction.InputBox (). Si toutefois vous souhaitez une solution personnalisée, vous pouvez facilement créer la vôtre en héritant de la classe System.Windows.Forms.Form. Cet article présente une classe InputDialog simple, que vous pouvez utiliser pour capturer une entrée utilisateur. Bien que la classe ne soit pas personnalisable par programme, vous pouvez assez facilement apporter les modifications nécessaires au code pour l'adapter à vos besoins.

La principale raison pour laquelle j'ai développé un InputDialog personnalisé était parce que je voulais développer la zone de texte lorsque l'utilisateur saisissait un texte plus long que la largeur de la zone de texte d'entrée. Cela permettrait à l'utilisateur de voir plus de texte qu'il était en train d'entrer. Voir les images ci-dessous :

Zone de texte multiligne

Le développement de InputDialog était relativement très facile. J'ai créé une classe InputDialog et hérité de la classe System.Windows.Forms.Form. Le constructeur de la classe a été rendu privé afin que des instances de la classe ne puissent pas être créées. Cependant, vous pouvez créer des instances d'une classe même lorsque le constructeur est privé dans la classe elle-même. Cela signifiait que je pouvais créer tous les contrôles nécessaires à afficher sur le InputDialog dans le constructeur de la classe, puis créer une instance de la classe dans une méthode Show () statique publique. L'instance de InputDialog apparaît sous la forme d'une boîte de dialogue. Ceci est important car l'affichage d'un formulaire en tant que dialogue bloque l'interface utilisateur principale. Cela est nécessaire car la méthode statique Show () renvoie une chaîne (entrée utilisateur) et, comme cela n'est pas fait immédiatement, nous devons bloquer l'interface utilisateur principale en affichant le dialogue InputDialog. Ce n'est que lorsque l'utilisateur clique sur le bouton OK ou sur le bouton Annuler que la méthode statique Show () renvoie la saisie de l'utilisateur. Ceci est mieux expliqué avec un exemple de code :


C#
public static string Show(string message)
{
    InputDialog dialog = new InputDialog();
    dialog.lblMessage.Text = message;
    dialog.ShowDialog();

    return dialog._txtInput;
}


VB.NET
    Public Shared Function Show(ByVal message As String) As String
        Dim dialog As InputDialog = New InputDialog()
        dialog.lblMessage.Text = message
        dialog.ShowDialog()
        Return dialog._txtInput
    End Function


La méthode ShowDialog () de l'exemple de code ci-dessus empêche l'exécution de l'instruction return. Lorsque l'instance de dialogue est supprimée, l'exécution du code continue et les données utilisateur sont renvoyées à la méthode appelante.

Le développement de la zone de texte est réalisé en ajoutant un événement KeyDown à la zone de texte. Lorsque la longueur de l'entrée utilisateur est supérieure à une longueur prédéterminée, la zone de texte s'agrandit en hauteur pour afficher plus de texte. Le reste du code traite de l'apparence de l'interface utilisateur, par exemple en ajoutant une ombre de formulaire et en enveloppant la zone de texte dans un panneau pour lui donner une bordure.

Le dernier exemple de code ci-dessous montre comment utiliser la classe :

C#
string input = InputDialog.Show("Please enter your name");
MessageBox.Show(input);

VB.NET
 Private Sub SurroundingSub()
    Dim input As String = InputDialog.Show("Please enter your name")
    MessageBox.Show(input)
End Sub


Bien que la classe ne soit pas très détaillée, elle pourrait être utilisée comme modèle.



Type Langage Téléchargement
Source code C#
VB.NET
Source d'article : codeproject

Publier un commentaire

0 Commentaires