Probleme avec une checkedlistbox [Résolu]

Signaler
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
14 février 2007
-
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005
-
Bonjour,


je viens de me mettre au c# et je suis bloqué. Je suis en train de
faire un programme permettant de telecharger une liste de fichiers, la
liste des fichiers à télécharger est dans une checkedlistbox, et je
voudrais téléharger que les fichiers cochés. Comment crééer une boucle
du genre "Pour chaque fichier coché faire Telecharger fichier" ?


Et deuxiemement j'aimerais que lorsque l'on double-clique sur le
fichier liste ça lance le programme avec le fichier chargé. Parce que
pour le moment lorsque je double clique sur la liste ça lance le
programme mais avec la checkedlistbox vide.


Merci d'avance !

16 réponses

Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

Bonjour,

Pour le premierement



// parcours des items de la checkedListBox

for
(
int i = 0; i <
this.checkedListBox1.Items.Count ; i++)
{

// test si l'item est coché

if(
this.checkedListBox1.GetItemChecked(i))
{
// ton code de téléchargement
}
}

Pour le deuxiemement si je comprend bien il te suffit d'initialiser le contenu de ta checkListBox au Load de ta form.

hum.......
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Ca se fait en 2 temps :



Dans ton programme, tu as la methode Main(string[] Args)

C'est ce parametre args qui contiendra le nom du fichier a ouvrir, il
faut donc que tu récupere sa valeur dans ton Main, puis que tu traites
les données comme bon te semble.



Ensuite, il faut associer l'extension .gid avec ton programme, dans la base de registre



Tu peux suivre cet exemple : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnforms/html/winforms10162003.asp

Mx
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

Coucou,
juste une question à la con

j'ai ca :
static
void Main()
{
Application.Run(new CAN_Menu());
}

Mais je ne peut pas mettre ca aussi ?


static
void Main(string[] Args)
{

Application.Run(
new CAN_Menu());
}

Car 2 points d'entrés dans le programme (logique ) du coup il faut seulement avoir la derniere ? Ca ne pose pas de problème pour le lancement de l'application ? ca depend peut etre de la façon de coder ( test de Args ... )

En tous cas merci

hum.......
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

je viens de le mettre en place voila ce que ca donne :



static
void Main(
string[] args)


{



// Register custom extension with the shell



using( RegistryKey key =


Registry.ClassesRoot.CreateSubKey(".dps") )


{



// Map custom extension to a ProgID


key.SetValue(
null, "dpsfile");


}



// Register open command with the shell



string cmdkey = @"dpsfile\shell\open\command";



using( RegistryKey key =


Registry.ClassesRoot.CreateSubKey(cmdkey) )


{



// Map ProgID to an Open action for the shell


key.SetValue(
null, Application.ExecutablePath + " "%L"");


}



// Register document icon with the shell



string icokey = @"dpsfile\DefaultIcon";



using( RegistryKey key =


Registry.ClassesRoot.CreateSubKey(icokey) )


{



// Map ProgID to a document icon for the shell


key.SetValue(
null, Application.StartupPath + "\\App.ico");




}



// Load main form, taking command line into account



if( args.Length == 1 )


{


Application.Run(
new CAN_Menu(Path.GetFullPath(args[0])));


}


Application.Run(
new CAN_Menu());


}

Et donc mes 2
constructeurs



/// <summary>



/// constructeur vide



/// </summary>



public CAN_Menu()


{


InitializeComponent();


}






/// <summary>



/// Constructuer pour l'ouverture d'un fichier en double click



/// </summary>



/// chemin d'acces au fichier



public CAN_Menu(
string sPath)


{


InitializeComponent();

// fontion qui permet de gérer l'ouverture du fichier et les opération voulues
Fonction_Ouvrir(sPath);


}

hum.......
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
14 février 2007

Merci beaucoup à vous deux, ça marche impec, j'ai juste rajouté un else ici pour pas lancer deux fois le programme :


if( args.Length == 1 )



{



Application.Run(new
CAN_Menu(Path.GetFullPath(args[0])));



}



else Application.Run(new
CAN_Menu());



}
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
14 février 2007

Merci pour ta réponse rapide Athalus, le premier probleme est réglé.

En revanche pour le deuxieme probleme, comment récuperer l'adresse du
fichier sur lequel j'ai double-cliqué afin de lancer l'application et
de charger la checkedListBox d'un coup ?
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

Si tu peux détailler un peu, tu double click ou ? tu lances l'application à partir d'ou ?

hum.......
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
14 février 2007

J'ai un fichier .gid (qui est en fait un fichier texte) sur mon disque
dur qui contient la liste des url des fichiers à telecharger, et
j'aimerais que lorsque je double clique dessus mon programme se lance
et charge la liste des url dans la checkedbox, ainsi il ne me resterais
plus qu'à cliquer sur "Télécharger" pour télécharger les fichers présents dans la checkedbox.

Je sais pas si j'ai été plus clair !!!
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

Et bien déjà ( mais ca dépend de ta version de windows ) tu peux faire ouvrir avec et la tu sélectionnes ton programme.
Mais apres j'en sais rien, c'est peu être un passage de paramètre qu'il faut que tu codes dans ton application. Peut etre que quelqu'un d'autre sur ce forum pourra mieux t'aider.
Je te conseil de faire un autre message sur le forum avec l'intitulé orienté seulement sur l'ouverture de ton fichier avec ton programme. Car c'est vraiment 2 problèmes differents.
En tout cas si tu trouves la solution ca m'interresse

hum.......
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Tiens, c'est quoi ce message vide au dessus ?

Bon, donc je disais dans le message précédent :

<hr style="width: 100%; height: 2px;">

Les 2 sont valables, mais tu ne peux en mettre qu'un seul comme tu dis.


C'est pour ca que tu dois garder que celui la (du moins quand tu peux /
dois recevoir des arguments au lancement de ton programme)





static
void Main(string[] Args)
{
Application.Run(
new CAN_Menu());
}



Et si tu ne passes pas d'argument, peu importe. (le
tableau args sera vide, c'est tout). Et meme si tu en passes, rien ne
t'oblige de les traiter.

Donc il n'y a pas de souci.

Mx
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

C'est bien ce que je pensais
Merci

hum.......
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
14 février 2007

Merci pour vos reponse mais je n'arrive toujours pas à récuperer le
chemin du fichier à partir duquel j'ai lancé l'application. Voilà ce
que j'ai essayé:



static

void Main(string[] Args)
{
Application.Run(
new GIDDownload());

MessageBox.Show(args[0].ToString);
}

------------------------------------------------------------


static

void Main(string[] Args)
{
Application.Run(
new GIDDownload());

MessageBox.Show(args[0]);
}


----------------------------------------------------------------



Et là j'ai suivi l'exemple :



static void Main(string[] args) {
using( RegistryKey key =
Registry.ClassesRoot.CreateSubKey(".ror") ) {
key.SetValue(null, "gidfile");
}

string cmdkey = @"gidfile\shell\open\command";
using( RegistryKey key =
Registry.ClassesRoot.CreateSubKey(cmdkey) ) {
key.SetValue(null, Application.ExecutablePath + " "%L"");
}
GIDDownload form = new GIDDownload();
if( args.Length == 1 ) {
//form.OpenFile(Path.GetFullPath(args[0]));
//J'ai essayé OpenFile parcequ'il n'y avait pas de OpenDocument mais ça ne marche pas
}

Application.Run(form);
}

----------------------------------------------------------

Est ce que vous avez une idée ?
Athalus a tu réussi ?
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Vérifiez si les clés en registre existe, plutot que des les reinscrire a chaque demarrage de l'appli.

(Quoique ma foi, je sais pas si ca change grand chose)

Mx
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

Pas idiot surtout si tu l'installes en administrateur et l'utilises en utilisateur... mais ca à l'interet de réassigner à chaque fois les fichiers au programme, si y'a des pb éventuelles. je vais le bourrer de condition alors

hum.......
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

Effectivement en fait il relance le progamme un fois que l'ont quitte le premier.
Merci

hum.......