Probleme avec une checkedlistbox

Résolu
ephilas Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 14 février 2007 - 21 févr. 2005 à 14:33
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005 - 22 févr. 2005 à 17:17
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

Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
21 févr. 2005 à 15:10
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.......
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
21 févr. 2005 à 17:16
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
3
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
22 févr. 2005 à 09:02
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.......
3
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
22 févr. 2005 à 11:55
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.......
3

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

Posez votre question
ephilas Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 14 février 2007 1
22 févr. 2005 à 17:07
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());



}
3
ephilas Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 14 février 2007 1
21 févr. 2005 à 15:44
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 ?
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
21 févr. 2005 à 15:47
Si tu peux détailler un peu, tu double click ou ? tu lances l'application à partir d'ou ?

hum.......
0
ephilas Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 14 février 2007 1
21 févr. 2005 à 16:04
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 !!!
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
21 févr. 2005 à 16:27
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.......
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
22 févr. 2005 à 09:15
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
22 févr. 2005 à 09:17
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
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
22 févr. 2005 à 09:20
C'est bien ce que je pensais
Merci

hum.......
0
ephilas Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 14 février 2007 1
22 févr. 2005 à 11:46
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 ?
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
22 févr. 2005 à 12:36
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
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
22 févr. 2005 à 12:43
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.......
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
22 févr. 2005 à 17:17
Effectivement en fait il relance le progamme un fois que l'ont quitte le premier.
Merci

hum.......
0
Rejoignez-nous