Boucle de lancement

Signaler
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011
-
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
-
Bonjour,



J'ai fait une checkedListBox1_SelectedIndexChanged avec a l'interieur l'affichage de fichiers contenu dans mon répertoire :



private void checkedListBox1_SelectedIndexChanged(object sender, System.EventArgs e)

{

string rep = checkedListBox1.SelectedItem.ToString();


di = Environment.CurrentDirectory + "/Commandes/" +
rep;

}



Et donc je peux sélectionner plusieurs case. Pour le moment, je sélectionne une case puis je lance le traitement suivant :



private void button4_Click(object sender, System.EventArgs e)

{

//connexion();

System.Diagnostics.Process.Start("notepad.exe");

System.Threading.Thread.Sleep(2000);

int counter = 0;

string line;

System.IO.StreamReader file = new System.IO.StreamReader(di);

string[] couple;

while((line = file.ReadLine()) != null)

{

if (line.Trim().StartsWith("[date]"))

{

couple = line.Split('=');

if (couple.Length != 0)

{


DateTime today
= DateTime.Now;



System.DateTime answer = today.AddDays(Double.Parse(couple[1]));


String aff2 =
answer.ToString("ddMMyy");



System.Windows.Forms.SendKeys.SendWait(aff2);

}

else

{}





System.Threading.Thread.Sleep(1000);

}

else

{



System.Windows.Forms.SendKeys.SendWait(line);



System.Threading.Thread.Sleep(1000);

}

counter++;

}



file.Close();



Console.ReadLine();

}



Qui en faite, récupére les valeurs d'un fichier pour les mettres dans un autre (pour les tests car sinon, c'est sur Telnet)



Mon but serait de pouvoir sélectionner plusieurs case, et que le traitement les éxecutes un a la fois !



J'ai essayé d'être clair !! Si vous avez d'autres question !! :D Merci

5 réponses

Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

Personne n'a une ptit idée pour me débloquer !!!



Allez un ptit effort
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
Salut Piep14,
Toujours si je me trompe pas la classe CheckedListBox possède la propriété CheckedItems : une collection des items cochés. Donc tu peux écrire ton traitement dans une fonction MonTraitement(string NomFichier) et sur ton eevenement tu écris

void button4_Click(...)
{
foreach(object Item in MaCheckListe.CheckedItems)
{
MonTraitement(Item)//avec un cast pour avoir le nom du fichier... }}

Là, où tu peux avoir un pb c'est que CheckedItems renvoie les items sélectionnés et indéterminés (dans le cas d'uncheckedlist en tristate)
Voila j'espere que ça va t'aider
Messages postés
345
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
13 mai 2011

Je n'arrive pas trop a voir comment faire la fonction MonTraitement(string NomFichier)

Aurais tu d'autres explication a m'apporter car j'en suis toujours au meme point !!!



Merci
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
Salut, Ben je pense que ton ancienne fonction button4_click devient MonTraitement.
Pour le paramètre, au lieu d'avoir une globale (ici di) que tu initialise à chaque fois tu passe le string en paramètre.
En fait pour moi ça donnerait un truc du style :

public void MonTraitement(string Fichier)
{
//connexion();
System.Diagnostics.Process.Start("notepad.exe");
System.Threading.Thread.Sleep(2000);
int counter = 0;
string line;
System.IO.StreamReader file = new System.IO.StreamReader(di);
string[] couple;
while((line = file.ReadLine()) != null)
{
if (line.Trim().StartsWith("[date]"))
{
couple = line.Split('=');
if (couple.Length != 0)
{
DateTime today = DateTime.Now;
System.DateTime answer = today.AddDays(Double.Parse(couple[1]));
String aff2 = answer.ToString("ddMMyy");
System.Windows.Forms.SendKeys.SendWait(aff2);
}
else
{}

System.Threading.Thread.Sleep(1000);
}
else
{
System.Windows.Forms.SendKeys.SendWait(line);
System.Threading.Thread.Sleep(1000);
}
counter++;
}

file.Close();

Console.ReadLine();
}

le tout avec

private void button4_Click(object sender, System.EventArgs e)
{
foreach (object Item in MacheckList.CheckedItem)
{
string rep = checkedListBox1.SelectedItem.ToString();
di = Environment.CurrentDirectory + "/Commandes/" + rep;
MonTratitemen(di);
}
}

Voila c'était ça l'idée, j'éspère que c'étatit compréhensible.
Sinon tu as la solution de traiter directement dans l'evenement de CheckedListBox, mais c'est moyen car si l'utilisateur coche/décoche/recoche, tu faisq du traitement pour rien.
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2