126 votes

Dialogue d'invite dans Windows Forms

J'utilise System.Windows.Forms mais étrangement, je n'ai pas la possibilité de les créer.

Comment puis-je obtenir quelque chose comme une boîte de dialogue javascript, sans javascript?

MessageBox est bien, mais il n’ya aucun moyen pour l’utilisateur de saisir une entrée.

301voto

Bas Brekelmans Points 13799

Vous devez créer votre propre boîte de dialogue d'invite. Vous pourriez peut-être créer une classe pour cela.

 public static class Prompt
{
    public static string ShowDialog(string text, string caption)
    {
        Form prompt = new Form();
        prompt.Width = 500;
        prompt.Height = 150;
        prompt.Text = caption;
        prompt.StartPosition = FormStartPosition.CenterScreen;
        Label textLabel = new Label() { Left = 50, Top=20, Text=text };
        TextBox textBox = new TextBox() { Left = 50, Top=50, Width=400 };
        Button confirmation = new Button() { Text = "Ok", Left=350, Width=100, Top=70 };
        confirmation.Click += (sender, e) => { prompt.Close(); };
        prompt.Controls.Add(textBox);
        prompt.Controls.Add(confirmation);
        prompt.Controls.Add(textLabel);
        prompt.AcceptButton = confirmation;
        prompt.ShowDialog();
        return textBox.Text;
    }
}
 

Et en l'appelant:

 string promptValue = Prompt.ShowDialog("Test", "123");
 

Mettre à jour le bouton par défaut ajouté (touche Entrée) et le focus initial en fonction des commentaires et d' une autre question .

55voto

KurvaBG Points 121

Ajoutez une référence à Microsoft.VisualBasic et utilisez-la dans votre code C #:

 string input = Microsoft.VisualBasic.Interaction.InputBox("Prompt", 
                       "Title", 
                       "Default", 
                       0, 
                       0);
 

14voto

Marino Šimić Points 4885

Il n'y a rien de tel en mode natif dans Windows Forms.

Vous devez créer votre propre formulaire pour cela ou:

utilisez la référence Microsoft.VisualBasic .

Inputbox est un code hérité introduit dans .Net pour la compatibilité VB6 - je vous conseille donc de ne pas le faire.

7voto

Sean Worle Points 171

Ce n'est généralement pas une bonne idée d'importer les bibliothèques VisualBasic dans des programmes C # (non pas parce qu'elles ne fonctionneront pas, mais uniquement pour des raisons de compatibilité, de style et de mise à niveau), mais vous pouvez appeler Microsoft.VisualBasic.Interaction.InputBox (). pour afficher le type de boîte que vous recherchez.

Si vous pouvez créer un objet Windows.Forms, ce serait mieux, mais vous dites que vous ne pouvez pas le faire.

2voto

DaveShaw Points 19555

Vous devrez créer un nouveau formulaire pour cela, puis le montrer.

Vous trouverez quelques exemples de création d'un formulaire de zone de saisie simple à l' adresse suivante : http://www.bing.com/search?setmkt=en-GB&q=C%23+input+box

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X