Comment mettre en valeur entrée par défaut .Net Application Console?
Comment pouvez-vous définir une valeur par défaut de la valeur d'entrée dans un .net application console?
Voici quelques croyez code:
Console.Write("Enter weekly cost: ");
string input = Console.ReadLine("135"); //135 is the default. The user can change or press enter to accept
decimal weeklyCost = decimal.Parse(input);
Bien sûr, je ne vous attendez pas à ce simple. Je parie sur le fait de devoir faire un peu de bas-niveau, non géré choses; je ne sais pas comment.
MODIFIER
Je sais que je peux le remplacer pas d'entrée par défaut. Ce n'est pas ce que je suis en demandant au sujet. Je suis en train d'APPRENDRE ce qui est impliqué dans la réalisation du comportement que j'ai décrit: donner à l'utilisateur une modifiables par défaut. Je ne suis pas inquiet au sujet de la validation des entrées; ma question n'a rien à voir avec cela.
Vous pouvez coder ce que la réponse suggérée - l'utilisateur ne sera pas de soins sur le codage technic. Pour la question théorique si il existe un moyen de le faire avec readline - probablement pas (au moins pas documenté).
Mais je vois étiez-vous êtes en essayant d'aller, nous sommes à la recherche d'une solution qui permettra à l'utilisateur de modifier le texte par défaut.
Je sais qu'il ne peut être fait avec .ReadLine(). Mais, je sais que c'est une façon de le faire.
Mais je vois étiez-vous êtes en essayant d'aller, nous sommes à la recherche d'une solution qui permettra à l'utilisateur de modifier le texte par défaut.
Je sais qu'il ne peut être fait avec .ReadLine(). Mais, je sais que c'est une façon de le faire.
OriginalL'auteur Ronnie Overby | 2009-10-31
Vous devez vous connecter pour publier un commentaire.
Je crois que vous allez avoir à gérer manuellement par l'écoute à chaque pression sur la touche:
Rapidement thown ensemble exemple:
C'est tout à fait vous devrez garder de s'assurer que le curseur ne pas sortir de la plage et de mettre à jour manuellement votre tampon.
Effectivement, c'est certainement la meilleure réponse à ce jour.
Jetez cela dans une méthode d'Extension de sorte que vous pourriez appeler la Console.ReadLine("135"); Permet l'Extension des méthodes de surcharges de méthodes existantes? Si non, donnez-lui un nouveau nom.
Vous ne pouvez pas ajouter des méthodes d'extension pour les classes statiques parce que vous ne pouvez pas créer des instances d'entre eux. Peut-Être SuperConsole.ReadLine("default")? Il y a beaucoup de cas à gérer, mais ce codage et de l'emballage dans une DLL doit être en vaut la peine.
J'ai eu "types statiques ne peuvent pas être utilisés en tant que paramètres" quand j'ai essayé de créer une méthode d'extension pour Console. Alors peut-être que ça ne marcherait pas & c'est peut-être une nouvelle question.
OriginalL'auteur Matt Breckon
Voici une solution simple:
Il n'est pas complet. Certains caractères dans le SendWait chaîne d'entrée ont une signification spéciale, de sorte que vous avez à leur échapper (par exemple. +, (, ), etc.)
Voir: http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx pour une description complète.
OriginalL'auteur Vizu
Ou... il suffit de tester la valeur saisie, si elle est vide de mettre la valeur par défaut en entrée.
OriginalL'auteur Dani
Solution Simple, si les entrées de l'utilisateur de rien, assigner par défaut:
Lorsque vous traitez avec des entrées de l'utilisateur, vous devez vous attendre qu'il peut contenir des erreurs. Vous pouvez utiliser TryParse afin d'éviter une exception, si l'utilisateur n'a pas la saisie d'un numéro:
Cela serait considéré comme la meilleure pratique pour la manipulation de la saisie de l'utilisateur. Si vous avez besoin d'analyser de nombreuses entrées de l'utilisateur, l'utilisation d'une fonction d'aide pour cela. Une façon de le faire est d'utiliser une méthode avec un nullable et retourner la valeur null si l'analyse a échoué. Ensuite, il est très facile d'attribuer une valeur par défaut à l'aide de la null coalescence de l'opérateur:
Puis pour lire une entrée et d'attribuer une valeur par défaut est aussi simple que:
ReadLine
en place.merci pour cette remarque, la réponse d'édition.
OriginalL'auteur driis
OriginalL'auteur ObiJuan
Vous pouvez utiliser la méthode d'assistance comme ceci:
OriginalL'auteur SMART_n
Je suis allé de l'avant et terminé Matt approche de mise en œuvre:
Notes:
caret
paramètre)OriginalL'auteur Efrain