lemmingperceval
Messages postés128Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention 2 août 20096 24 juil. 2008 à 17:03
C'est parce que ton richTextBox à une visibilité private dans ta classe Form1.
Soit tu lui donne une visibilité public ou alors tu créer une méthode d'encapsulation pour ce dernier:
Nixeus
Messages postés192Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention19 octobre 2020 24 juil. 2008 à 17:29
:(
C'est compliqué dis donc, il n'y a pas plus simple ? Surtout en c# !
En fait ce qui est bizarre c'est que dans la classe ou je veux controler mon RichTexteBox, quand je tappe le début de son nom, elle apparait, ca voudrais donc dire que j'y ai accès !
Par contre si j'éssaye d'écrire dedans, ca ne fais rien ! :(
Nixeus'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Tout le problème se déroule dans le classe CDirectory !
Pour débugger, met des valeurs dans chaque champs ( en haut)
Puis met deux chemin dans chaque path !
Je voudrais en fait, que, lors de la copie du dossier, je vois son "avancement" dans ma RichTextBox !
Quelquechose du genre : " copie de..."
" copie de.."
lemmingperceval
Messages postés128Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention 2 août 20096 24 juil. 2008 à 20:05
Non ce n'est pas du tout necessaire.
En faite ton problème, c'est que depuis CDirectory, tu veux pouvoir mettre à jour l'avancement.
Ok, alors ce que tu fais, tu supprime l'héritage de Form1 sur CDirectory.
Dans ta classe CDirectory, tu créer un object Form1, par exemple ownerForm1. Tu l'encapsule a la limite.
Ensuite dans form1, quand tu instancie CDirectory, fait comme ca:
CDirectory c =
new
CDirectory { OwnerForm1 =
this };
Maintenant, dans CDirectory, si tu veux atteindre ProcessingBox, tu fais
this.ownerForm1.ProcessingBox. ...
Tu aura encore un autre problème, c'est que les lignes que tu vas ajouter durant le traitement ne s'afficheront pas avant la fin du traitement (a cause que tu utilise pas un thread ).
Aussi, la méthode CopyAll, fais attention: elle est récursive alros si tu copie un dossier avec plein de dossier à l'intérieur, etc tu aura un stackOverFlowException. Regarde si tu peux pas trouver une meilleures méthode.
Comme ca a vu d'oeil, documente toi encore un peu sur les objects: la différence entre une classe et une instance.
Et pour prendre un peu d'avance, regarde aussi les threads, et les delegates.
Redis nous si tu as besoin d'aide.
Au faite, ne fait pas plusieurs poste pour le meme problème, ca sert a rien mise à part que deux personnes vont t'aider sur des fronts différents, et toi t'es au milieu et tu perds la tête
Nixeus
Messages postés192Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention19 octobre 2020 25 juil. 2008 à 11:38
Yesss, ca marche !!
Maintenant, je vais me rencarder sur les threads, j'en avais déja utilisé un peu ne BTS avec les MFC :)
Je vais voir à cela et surtout comment "agencer" ca avec ma copie !
Nixeus
Messages postés192Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention19 octobre 2020 25 juil. 2008 à 12:19
Au fait, pourquois parles tu de thread pour affiche l'affichage de ma ListBox ?
Car je viens de tester, et tout s'affiche en temps réel, elle est bien rafrachie !
Par contre, oui, le reste du programme misère sec !!!!
Voici comment j'ai fais dans ma méthode CopyAll :
public
void CopyAll(
DirectoryInfo source,
DirectoryInfo target){
if (
Directory.Exists(target.FullName) ==
false) {
Directory.CreateDirectory(target.FullName);
string MaString=
"Copie du r‚pertoire"+source.ToString()+
" vers "+target.FullName.ToString()+
"\n";
lemmingperceval
Messages postés128Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention 2 août 20096 26 juil. 2008 à 11:46
L'idée du deuxième thread, c'est de s'occupé uniquement de la méthode CopyAll (la méthode de calcule/recherche).
Si ton control se rafraichi et que tu as pas mis de thread/backGroundWorker(Classe pour justement faire des tâches en arrière plans), c'est bien mais c'est pas dit que ca dur.
Si tu veux faire propre, créer un thread qui exécutera ta méthode CopyAll. Créer aussi des delegate pour mettre à jours tes controls dans le thread principal.