Gestion de contrôles à base de threads

Signaler
Messages postés
49
Date d'inscription
lundi 4 décembre 2000
Statut
Membre
Dernière intervention
29 avril 2009
-
Messages postés
49
Date d'inscription
lundi 4 décembre 2000
Statut
Membre
Dernière intervention
29 avril 2009
-
Bonjour,

C'est un peut délicat à expliquer mais je vais tenter de vous expliquer au mieux mon problème.

Je dois gérer une "IHM" qui se construit ainsi :

Dans la partie de gauche, il y a deux radioButton et dans la partie de droites 4 boutons.

Le premier radioButton permet à l'utilisateur d'accéder au logiciel sans clé USB. Quand il sera valider il dégrisera 3 boutons sur 4.

CODE :
private void radioButtonSansCle_CheckedChanged(object sender, EventArgs e)
{
//Suite au clic dans ce controle on dégrisera uniquement le suivi de l'avion
SuiviAvion.Enabled = true;
SeuilAlarme.Enabled = false;
CourbeCapteur.Enabled = true;
VisualiserVol.Enabled = true;
}



Le deuxième radioButton permet à l'utilisateur d'accéder au logiciel avec une clé USB.

CODE :
private void radioButtonAvecCle_CheckedChanged(object sender, EventArgs e)
{
//On affiche la fenetre graphique indiquant à l'utilisateur qu'il faut brancher la clé USB

Thread myThread = new Thread(new ThreadStart(FonctionThread));
myThread.Start();
}

public void FonctionThread()
{
pFormAlerte.ShowDialog();
}

Le clic sur ce bouton, dans un premier temps affichera une fenêtre graphique qui propose à l'utilisateur d'insérer une clé USB avec la possibilité de revenir au menu précedent par le moyen d'un bouton CANCEL.

CODE:
private void buttonCANCEL_Click(object sender, EventArgs e)
{
pIHMprinc.myThread.Abort();
pIHMprinc.ChangerMode();
}


Si la clé USB est détectée la fenêtre disparaîtra automatiquement, et ensuite devra effectuer certaines taches dont dégriser tout les boutons de l'IHM principale.

CODE:

pFormAlerte.Dispose(); pMenuIHM.TachesCleUSB();

SuiviAvion.Enabled = true;
SeuilAlarme.Enabled = true;
CourbeCapteur.Enabled = true;
VisualiserVol.Enabled = true;



Si l'utilisateur ne veux pas brancher la clé USB et appuie sur le bouton CANCEL il faut que le deuxième radioButton qui est validé se dévalide et que le premier se valide étant donner que l'accés à ce logiciel sera dorénavant sans clé USB.

pIHMprinc.ChangerMode();
public void ChangerMode()
{
radioButtonSansCle.Checked = true;
radioButtonAvecCle.Checked = false;
}

J'ai essayer avec un thread de commander l'affichage de la fenêtre graphique.

J'ai eu certains problèmes en développant avec des threads car si je clique plusieurs fois sur les radioButtons ça plante.

Donc j'aimerais savoir quelles solutions je pourrais y apporter avec des threads voir des sémaphores (je ne connais pas leur modes de fonctionnement en C#) afin de régler les différents conflits dans cette IHM.

Ci vous manquer de renseignements où que vous voulez du code n'hésitez pas à demander car cette question me tient vraiment a coeur c'est très important pour moi.

Je vous remercie par avance.

3 réponses

Messages postés
49
Date d'inscription
lundi 4 décembre 2000
Statut
Membre
Dernière intervention
29 avril 2009

Désolé apparemment il y a un problème avec le traitement de texte les saut à la ligne ne sont pas pris en compte :S
Messages postés
49
Date d'inscription
lundi 4 décembre 2000
Statut
Membre
Dernière intervention
29 avril 2009

Est ce que
Le problème est
corrigé ?
Messages postés
49
Date d'inscription
lundi 4 décembre 2000
Statut
Membre
Dernière intervention
29 avril 2009

Bien je retape mon message encore désolé :


Bonjour,

C'est un peut délicat à expliquer mais je vais tenter de vous expliquer au mieux mon problème.

Je dois gérer une "IHM" qui se construit ainsi : Dans la partie de gauche, il y a deux radioButton et dans la partie de droites 4 boutons.

Le premier radioButton permet à l'utilisateur d'accéder au logiciel sans clé USB.

Quand il sera valider il dégrisera 3 boutons sur 4.

CODE :
private void radioButtonSansCle_CheckedChanged(object sender, EventArgs e)
{ //Suite au clic dans ce controle on dégrisera uniquement le suivi de l'avion

SuiviAvion.Enabled = true;
SeuilAlarme.Enabled = false;
CourbeCapteur.Enabled = true;
VisualiserVol.Enabled = true; }

Le deuxième radioButton permet à l'utilisateur d'accéder au logiciel avec une clé USB.

CODE :
private void radioButtonAvecCle_CheckedChanged(object sender, EventArgs e)
{ //On affiche la fenetre graphique indiquant à l'utilisateur qu'il faut brancher la clé USB

Thread myThread = new Thread(new ThreadStart(FonctionThread));
myThread.Start();
}


public void FonctionThread()
{
pFormAlerte.ShowDialog();
}

Le clic sur ce bouton, dans un premier temps affichera une fenêtre graphique qui propose à l'utilisateur d'insérer une clé USB avec la possibilité de revenir au menu précedent par le moyen d'un bouton CANCEL.

CODE:
private void buttonCANCEL_Click(object sender, EventArgs e)
{
pIHMprinc.myThread.Abort();
pIHMprinc.ChangerMode();
}


Si la clé USB est détectée la fenêtre disparaîtra automatiquement, et ensuite devra effectuer certaines taches dont dégriser tout les boutons de l'IHM principale.

CODE:
pFormAlerte.Dispose();
pMenuIHM.TachesCleUSB();
SuiviAvion.Enabled = true;
SeuilAlarme.Enabled = true;
CourbeCapteur.Enabled = true;
VisualiserVol.Enabled = true;


Si l'utilisateur ne veux pas brancher la clé USB et appuie sur le bouton CANCEL il faut que le deuxième radioButton qui est validé se dévalide et que le premier se valide étant donner que l'accés à ce logiciel sera dorénavant sans clé USB.

pIHMprinc.ChangerMode();


public void ChangerMode()
{
radioButtonSansCle.Checked = true;
radioButtonAvecCle.Checked = false;
}

J'ai essayer avec un thread de commander l'affichage de la fenêtre graphique. J'ai eu certains problèmes en développant avec des threads car si je clique plusieurs fois sur les radioButtons ça plante.

Donc j'aimerais savoir quelles solutions je pourrais y apporter avec des threads voir des sémaphores (je ne connais pas leur modes de fonctionnement en C#) afin de régler les différents conflits dans cette IHM.

Ci vous manquer de renseignements où que vous voulez du code n'hésitez pas à demander car cette question me tient vraiment a coeur c'est très important pour moi.

Je vous remercie par avance.