Comment éffacer réellement un caractère dans la console...
cs_dayvid
Messages postés212Date d'inscriptionmardi 18 janvier 2011StatutMembreDernière intervention12 février 2013
-
14 janv. 2013 à 18:40
cs_dayvid
Messages postés212Date d'inscriptionmardi 18 janvier 2011StatutMembreDernière intervention12 février 2013
-
15 janv. 2013 à 13:33
Bonsoir,
J’essaye de créée un système de "AdvancedConsoleInput", c'est à dire une fonction qui n'affichera seulement
que les caractères que j'aurais définie, par exemple si je décide que seule la touche "a", "b" et "c" peuvent
être appuyé et bien si j'appuie sur les autre touche, rien ne se passera, seul les touches "a", "b" et "c"
réagiront !
Quand je tape la touche, le caractère s'affiche dans la console a la position actuel du curseur.
Mais je m'arrache les cheveux pour réellement effacer un caractère quand on appuie sur la touche "BackSpace"
Il faut aussi gérer les flèches du clavier pour déplacer le curseur de la console, se que j'ai réussi a faire.
Bref, je cherche à faire comme un système de "Console.ReadLine" mais avec les caractères que je veux qui s’affiche.
Vous pouvez m'aider Svp ?
Je poste mon code ici histoire de vous faire voir ou j'en suis:
''' <summary>
''' Ceci permet de saisir des caractères choisie avec le clavier dans la console, le texte est validé une fois que l'utilisateur a appuyé sur la touche entrée
''' </summary>
''' Ce paramètre optionnel définie les caractères autorisé qui penvent être tapé au clavier, chaque caractère doit entrée t'elle quel, exemple: abc (seule a, b et c serront accepter)
''' <returns>Retourne la ligne de texte taper au clavier une fois que l'utilisateur a valider en appuyent sur la touche entrée</returns>
''' <remarks></remarks>
'''
Public Function AdvencedConsoleInput(Optional ByVal CaractèresAccepter As String = "") As String
Dim InfoTouche As New ConsoleKeyInfo
Dim Texte As String = ""
Dim DepartX = Console.CursorLeft
Dim DepartY = Console.CursorTop
Dim Chaine As String = ""
Dim LongueurChaine As Integer = 0
Dim Caractère As String = ""
Do
InfoTouche = Console.ReadKey(True)
If InfoTouche.Key = ConsoleKey.Backspace And Console.CursorLeft > 0 Then
LongueurChaine = Texte.Length - 1
If LongueurChaine <= 0 Then
LongueurChaine = 0
End If
Debug.WriteLine(Texte)
Texte = Texte.Remove(Console.CursorLeft - 1, 1)
Console.CursorLeft = DepartX
Console.CursorTop = DepartY
Console.Write(Texte + " ")
Console.CursorLeft = Console.CursorLeft - 1
Debug.WriteLine(Texte)
ElseIf InfoTouche.Key ConsoleKey.RightArrow Or InfoTouche.Key ConsoleKey.LeftArrow Or InfoTouche.Key = ConsoleKey.UpArrow Or InfoTouche.Key = ConsoleKey.DownArrow Then
If InfoTouche.Key = ConsoleKey.RightArrow Then
If Console.CursorLeft <= Texte.Length - 1 And Console.CursorLeft < Console.BufferWidth - 1 Then
Console.CursorLeft = Console.CursorLeft + 1
End If
ElseIf InfoTouche.Key = ConsoleKey.LeftArrow Then
If Console.CursorLeft > 0 Then
Console.CursorLeft = Console.CursorLeft - 1
End If
ElseIf InfoTouche.Key = ConsoleKey.UpArrow Then
ElseIf InfoTouche.Key = ConsoleKey.DownArrow Then
End If
ElseIf Console.CapsLock = True Then
If Console.NumberLock = True Then
Caractère = GestionNumPad(InfoTouche, Texte)
Console.Write(Caractère)
Texte += Caractère
Else
Caractère = Chr(InfoTouche.Key)
Console.Write(Caractère)
Texte += Caractère
End If
Else
Caractère = LCase(GestionNumPad(InfoTouche, Texte))
Console.Write(Caractère)
Texte += Caractère
End If
Threading.Thread.Sleep(1)
Loop Until InfoTouche.Key = ConsoleKey.Enter
Return Texte
End Function
A voir également:
Comment éffacer réellement un caractère dans la console...
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 14 janv. 2013 à 22:23
Salut
Je poste mon code ici histoire de vous faire voir ou j'en suis:
et où en es tu ?
tu aurais pu écrire un code encore plus spaghetti
avec plus de if else if imbriqué l'un dans l'autre
si tu essaies de commenter ton code
Moi, ce que j'en dis, c'est qu'il n'y a visiblement aucune méthode ou propriété de la classe Console qui permette de le faire directement. Au pire ou au mieux, selon le point de vue. console.clear efface tout l'écran.
Et puis je me questionne sur la pertinence de faire des acrobaties de même dans la console quand il y a un contrôle Windows Forms du nom de MaskedTextBox est fait spécialement pour cela.
Et, puis, c'est peut-être louable de vouloir apprendre VB.net, mais je me questionne sérieusement si c'est vraiment utile d'obliger les autres à corriger tes "performances".
Et puis, je me demanderais si le rôle principal de Visual Basic, c'est de faire des programmes en ligne de commande. Parce que, si la réponse était oui, le programme ne s'appellerait pas Visual Basic et Microsoft n'aurait sûrement pas inventé PowerShell et ne l'aurait pas ajouté d'Office à Windows.
Et puis, je ferais une petite visite sur cette page, en faisant les adaptations qui s'imposent.
Parce que demander à des gens bénévoles de corriger des exercices futiles, fussent-ils des exploits, pourrait bien finir par empêcher d'autres personnes d'avoir des réponses à des problèmes bien réels.
Je ne suis pas un étudiant mais simplement un petit programmeur amateur !
Je n'est en aucun cas envie de m'attirer les foudre des gents, et je suis vraiment désoler de recevoir des messages de ce genre-là croyez-le bien
Je finirais simplement par m’excuser de la cause occasionner et dire que je ferais le nécessaire pour m'améliorer.
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 15 janv. 2013 à 10:39
C'est très bien, dayvid et je te félicite de cette approche : développer en t'amusant.
J'en fait rigoureusement autant, dans de nombreux domaines, dont la pêche.
Quand toutefois je pêche, c'est moi, qui pêche, pas le voisin. Et je me garde en plus de tenter de bouffer le temps disponibles des autres pêcheurs pour leur demander de m'aider perfectionner ma "manière" de vouloir pêcher la crevette grise alors que cette pêche ne les intéresse pas du tout, eux ... ni leur apporterait le moindre gain en perfectionnement de leur propre pêche.
Amuse-toi bien.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
cs_dayvid
Messages postés212Date d'inscriptionmardi 18 janvier 2011StatutMembreDernière intervention12 février 20131 15 janv. 2013 à 13:33
C'est pas facile pour moi de bien me tenir sur un forum, et faire se qui faut, j'ai eu pas mal de problème avec ça déjà
Mon orthographe n'est jamais bien, je postes des tonnes de question et code qui ne servent à tien
Je poste des placard de code, bref, je me met tous le monde à dos quoi sans le vouloir !
Je sais, tous le monde s'en fiche et en plus je raconte ma vie comme dabe et ça, les gents ils aimes pas ça !
Bref, en gros si j'ai bien compris, j'ennuie tous le monde avec mes demandes à deux balles...
Pas facile la vie sur un forum...
Bref, merci pour vos remarques qui même si elle me font pas toujours bien plaisir m'aideront je l'éspère à évoluer !
Cordialement.