Raccourci avec clavier

Résolu
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 - 29 mars 2005 à 08:46
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 - 12 avril 2005 à 11:21
Un petit problème se pose !

J'ai 2 solutions, mais comment les réaliser ?

1.) Je dois taper des lettres dans un textBox, puis repérer les lettres qui ont été taper une à une ! (si je tape: "ab cd") il devra faire les événements qui correspond a : "a" puis "b" puis un espace etc..

2.) C’est le même problème, sauf qu'au lieu d'utiliser les chaînes de caractère j'utilise des boutons (si c'est possible??), alors j'ai 5 boutons et si je tape sur le bouton a il me fait l'événement "a".. Mais si j'appuis sur "a" au clavier, c'est comme si je clique sur le a... (comme le clavier dans windows dans "Accessibilité")
comment faire ? <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />

17 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
29 mars 2005 à 10:53
La solution la plus basique si tu faire a partir d'une chaine:



foreach(char c in maChaine)

{

switch(c)

{

case 'a' :

// Ton action "a"

break;

case 'b':

// ton action b

break;

...

}

}

Mx
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
29 mars 2005 à 11:19
Une chaine de caractere est vu comme un tableau de chars

Je considere maChaine comme la chaine dans laquelle tu veux lire

En faisaint foreach(char c in maChaine)
on lui dit de lire un par un les caracteres qui la compose. La variable
nommée "c" est juste la variable a qui on affecte le caractere lu dans
le foreach

En fait c'est comme si on faisait for(int i = 0; i < maChaine.Length; i++)

est qu'ensuite tu récuperais la valeur de maChaine[i]



N'hésite pas a poser d'autres questions si tu en as encore.

Mx
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
11 avril 2005 à 10:27
using System.Text;

...

string tachaine = @"c:\toto";

StringBuilder sb = new StringBuilder(tachaine);

sb.Append(@"\lala");

MessageBox.Show(sb.ToString());



Tu pourrais aussi faire



tachaine += @"\lala";

Mais ce n'est pas recommandé pour des raisons de performances.

Mx
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
11 avril 2005 à 10:56
C'est un caractère qui autorise la définitions de chaines dites
"verbatim", qui te permet de ne pas avoir a doubler les caracteres '\'
dans ta chaine.



Sinon, tu aurais du écrire

string tachaine = "c:\\toto";


StringBuilder sb = new StringBuilder(tachaine);


sb.Append("\\lala\");


Mx
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
29 mars 2005 à 10:24
Euh, je crois pas avoir tout compris.

Tu nous donnes pas vraiment ton probleme, en fait. On en a une petite idée en lisant les solutions, mais...

En fait, tu aimerais qu'une touche du clavier soit en relation avec une
action, et donc tu voudrais que ton appli realise toutes les actions
ordonnées par l'utilisateur quand il tape sur les touches ?


Mx
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
29 mars 2005 à 10:46
Oui exactement !

Par exemple, quand je tape "r" ca me dessine un rond.. comme tu dis j'aimerais qu'une touche du clavier soit en relation avec une action. Mais je préférerai avec les chaînes de caractères.. comment faire pour lire un à un les caractères de mon texte box et les reconnaîtes ?

Y'a t'il un exemple dans les codes que propose CsharpFR ?
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
29 mars 2005 à 11:11
Je comprends le raisonnement ! mais je comprends pas la ligne de code:
foreach(char c in maChaine)

Pour le foreach pas de problème ! mais pourquoi : char c in maChaine
c ? in ? pourquoi ?

Ca me parait aussi la meilleure solution ! je vais prendre celle-ci !
Merci !<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 mars 2005 à 11:24
Tout object qui dérive de IEnumerator peut être itéré grâce au mot clef "in". Mais tu peux très bien créer un Iterator manuellement et itérer avec lui. C'est juste une simplificiation d'écriture.


Pour l'exemple que t'as donné MorpionMx : un string est une collection de char, donc on peut y accéder avec l'index myString[x], et en itérant dedans, avec un Iterator justement. Ou pour faire plus simple, avec le mot clef in comme dans son exemple :-)

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 mars 2005 à 11:26
Bon, va falloir que je rafraichisse un peu plus régulièrement, ces temps j'arrête pas de me faire avoir par le refresh

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
11 avril 2005 à 09:47
J'ai encore une petite question avec les chaînes de caractères et le C#..

J'ai une chaîne "fichier" qui contient par exemple:

c:\toto

et je voudrais lui ajouter encore des caractères sans effacer c:\toto
ex: c:\toto\lala

comment faire pour rajouter le \lala

Merci d'avance pour m'avoir aidé !
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
11 avril 2005 à 10:45
Je comprends merci !! c'est très sympa !

Le "@" il joue quel rôle dans ce cas ?
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
11 avril 2005 à 11:04
Okey ! Merci pour tout !

Ce forum est génial ! surtout les membres.
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
11 avril 2005 à 16:49
la solution avec le sb.Append ne marche pas ! je comprends pas..

Je fais comme ca:

public string fichier;

fichier=@"D:\\Lettre";
StringBuilder ajouter = new StringBuilder(fichier);

ajouter.Append(@"\test.exe");

puis je l'imprime avex un texte box:

textBox1.Text=fichier.ToString();

et il me met:

D:\lettre

normalement il devrait mettre: D:\Lettre\test.exe

Ou est la faute ?
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
11 avril 2005 à 16:57
textBox1.Text = ajouter.ToString();



ca devrait etre bon




Mx
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
11 avril 2005 à 17:25
Merci !! ca fonctionne !! j'avais compris que ca modifiait l'autre... mais c'est pas grace c'est = pour moi !
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
12 avril 2005 à 09:54
La dernière question !!

J'utilise la méthode que tu m'as donné :
ajouter.Append(@"\test.exe");

Mon problème est que je dois l'utilisé dans 2 fonctions différantes..
Je m'explique par exemple:

StringBuilder ajouter;

private void Fonction_1()
{
fichier=@"D:\\Lettre";
StringBuilder ajouter = new StringBuilder(fichier);
ajouter.Append(@"\test.exe");
Fonction_2();
}

private void Fonction_2()
{
textBox1.Text=ajouter.ToString(); //Gros bug ici !!
}

Pourquoi ca bug?? ca compil sans problème... mais quand j'en arrive à cette ligne !! gros bug !
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
12 avril 2005 à 11:21
J'ai trouvé... bon c'est peu rustre mais ca marche...

fichier=@"D:\\Lettre";
StringBuilder ajouter = new StringBuilder(fichier);
ajouter.Append(@"\test.exe");
fichier=ajouter.ToString();
0
Rejoignez-nous