2010-09-21 2 views
1

Je crée une application similaire à une console et je me demande quel serait le meilleur moyen d'empêcher l'utilisateur d'éditer des commandes déjà exécutées. En ce moment j'utilise un KeyPressEventHandler pour vérifier où l'utilisateur essaye de taper et essentiellement l'ignorer si le signe est ailleurs que dans la partie "prompt" de la zone de texte. Cela fonctionne exactement comme vous le souhaitez, il ne semble pas être une solution idéale pour une telle exigence de base. Je suis modérément nouveau à C# donc je ne suis pas sûr quelles sont les options qui s'offrent à moi, donc demander des suggestions.Une boîte de texte C# qui fonctionne comme une interface de ligne de commande

Répondre

3

Si vous voulez juste pour écrire des commandes à la fin alors il pourrait être une bonne solution pour séparer l'entrée de la sortie, avec un grand MultiLine, ReadOnlyTextBox pour la sortie et ont une seule ligne séparée TextBox ci-dessous pour l'entrée.

Si c'est une bonne solution ou non est une question d'utilisabilité qui nécessite une compréhension plus large de votre application pour déterminer.

+0

J'avais à l'origine cherché à le faire de cette façon, mais je n'aimais pas à quoi cela ressemblait quand on faisait défiler la sortie et que la zone de texte d'entrée restait. Je ne voulais pas non plus manipuler des commandes plus longues tapées dans la texbox d'une seule ligne, puis-je la laisser continuer sur une ligne ou changer la zone de texte pour qu'elle s'affiche sur plusieurs lignes et ajuster la taille de toutes les fenêtre. Ce que je vise maintenant est quelque chose de similaire à Bash ou à l'invite de commande dans Windows. Essentiellement une zone de texte où la saisie est limitée à une zone spécifique. – phill

0

@Phill - si elle est une clé autorisée, vous pouvez simplement capturer chaque frappe appliquée par l'utilisateur, et pour chaque touche enfoncée ...

  • (c.-à-pas la flèche), puis utilisez pour construire l'utilisateur une ligne de commande visible
  • si ce n'est pas permis (la flèche), capturer (bloquer efficacement)

... si je bien interprété votre préoccupation - je suppose que ' pur bloc 'sur la touche fléchée remonterait à peu près votre souci des utilisateurs sly lignes exécutées.

J'ai jeté cette idée parce que je suis incertain j'ai bien compris ce que vous essayez d'accomplir. ^^

+0

Ce que j'essaye d'accomplir est à peu près l'invite de commande dans Windows ou Bash dans Linux. Je capturerai la flèche vers le haut pour faire défiler l'historique des commandes afin que ce ne soit pas un problème, c'est ce qui arrive quand quelqu'un utilise la souris pour placer le curseur ailleurs que sur la ligne d'entrée. Je veux toujours permettre la sélection afin que le texte puisse être copié, je ne veux pas autoriser l'édition. La question est: est-ce que je vérifie chaque touche et dise "Ceci est un edit, ignore" ou "ceci n'éditera pas, autorisera" ou y a-t-il une meilleure manière de le faire. – phill

Questions connexes