IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Indexer , backgroundworker , boite de dialogue


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    autodidacte
    Inscrit en
    Décembre 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 20
    Par défaut Indexer , backgroundworker , boite de dialogue
    Hello
    Après pas mal de petits programmes tous simples certaines choses se compliquent et je m’emmêle les pinceaux , du coup des questions me taraudent malgré des recherches sur google et tutoriaux ainsi que de multiples essaies avec des résultats foireux .
    Je reviens donc afin qu'on puisse éclairer un peu ma lanterne.
    alors voila mes questions

    1> est- il possible d'indexer des objets exemple form(X) avec X= 1 , 2 ,3 ... , pour avoir Form1 , Form2 , Form3 afin de les exploiter dans différentes pages de codes ( Modules , public class , etc )

    2> peut-on exploiter deux boites dialogues en même temps ex: ouvrir FontDialog1.ShowDialog() et ColorDialog1.ShowDialog() ensembles en multithread pour modifier une sélection de texte commune ?

    3> peut-on utiliser un backgroundworker dans un module si oui quelle syntaxe ? et enfin pourquoi lorsque je mets une ligne de traitement de texte comme la fonction RichTextBox1.Find dans un backgroundworker ça fonctionne pas et hors backgroundworker ça fonctionne ?

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Si tu n'as pas trouvés de réponses à tes questions c'est que tu ne cherches pas "avec le(s) bon(s) terme(s)" et "au "bon(s) endroit(s)" !!
    Pour ce faire on privilégie "l'utilisation de termes anglais" sur "des sites et communautés anglophones (et au pire les trad francophones)".

    A coups sure tu as sautés des cours mais je vais te répondre très simplement :

    R1 : Si tu travailles sur du WinForm alors :
    - apprends à passer des paramètres entre formulaire(s)
    - et/ou alors tu créés une List(Of Form) ou bien encore tu déclares en Shared un Dictionary(Of Integer, Form)

    R2 : Nul besoin de parler de multithreading ça n'a absolument rien à voir....... Une boite de dialogue Modale par définition prends le focus sur toutes les instances d'affichage en cours d'exécution et une boite modale ne peut pas accepter en tant qu'argument ue autre boite modale donc je dirais que ce n'est pas envisageable d'opérer ainsi !

    R3 : Un composant backgroundWorker peut très bien être utilisé dans un module de classe mais à ce titre il faudra qu'il soit instancié et géré dynamiquement ET NON glissé-déposé comme on peut le faire sur un formulaire.
    Lorsqu'on cause backgroundWorker il faut OBLIGATOIREMENT aborder la gestion des événements suivants :
    - DoWork (dans ce gestionnaire on ne place pas de code qui utilise ou mets à jour l'interface du programme au risque de causer une exception de type "CrossThread" !!!)
    - ProgressChanged (ici on possède 2 arguments e.usersate et e.Progress afin de mettre à jour l'interface du programme!!)
    - RunWorkerCompleted (lorsqu'une tache débute dans un BGW c'est ICI qu'elle se termine !!)

    ".Find" est une méthode qui fait appel au contrôle "RichTextBox1" de ton programme. Il fait certainement appel à des fonctions graphique ce qui cause l'exception "CrossThread". Pour régler le problème il faut passer les lignes de ton RichTextBox1 en argument à la méthode ".RunWorkerAsync()" comme mentionné ici

    Mon franc parlé peut te paraître un peu braque mais tu as eu le droit à toute mon attention et quelques réponses à tes questions. Maintenant c'est à toi de faire le reste en lisant davantage de ressources anglophones.

    Bonne lecture .

    A+

  3. #3
    Membre averti
    Homme Profil pro
    autodidacte
    Inscrit en
    Décembre 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 20
    Par défaut
    merci d'avoir prit le temps de répondre à mes questions
    j'avoue ne pas bien maitriser les techniques et les termes adéquats encore , et pour coup patauger un peu dans la semoule en terme de recherches et d'utilisations des exemples.
    Mais je vais suivre tes conseils , et ça va bien finir par rentrer dans ma petite tête

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour.

    Citation Envoyé par wallace1 Voir le message
    Bonsoir,

    R1 : Si tu travailles sur du WinForm alors :

    -- et/ou alors tu créés une List(Of Form) ou bien encore tu déclares en Shared un Dictionary(Of Integer, Form)

    .
    A+
    Encore plus simple, mais en VB seulement:

    My.forms

  5. #5
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par propi Voir le message
    merci d'avoir prit le temps de répondre à mes questions
    j'avoue ne pas bien maitriser les techniques et les termes adéquats encore , et pour coup patauger un peu dans la semoule en terme de recherches et d'utilisations des exemples.
    Mais je vais suivre tes conseils , et ça va bien finir par rentrer dans ma petite tête
    Pas de quoi,

    Mais attention, ça ne vaut pas dire qu'on ne t'aidera pas si tu te heurtes à quelques difficultés lors d'un projet....après tout on est là pour ça mais il est vrai que la plus grosse partie du boulot consiste à aborder une grande partie des notions de la POO et du langage.
    Une très bonne méthode pour apprendre c'est de créer de touts petits projets dans lesquels tu utilises et exploites à 100% un à un les contrôles disponibles dans la boite à outils de l'EDI (RichTextbox, Listview, Combobox, DatagridView, ...etc......)
    Lorsqu'on veut progresser en général il faut avant toute chose bien connaitre ses outils.

    A+

  6. #6
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour.



    Encore plus simple, mais en VB seulement:

    My.forms
    Comme quoi on en apprends tout les jours.....je ne connaissais pas du fait que j'utilise très rarement plus d'1 formulaire dans mes projets ou alors je surcharge ou bien j'instancie.

    Merci à toi.

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par propi Voir le message
    1> est- il possible d'indexer des objets exemple form(X) avec X= 1 , 2 ,3 ... , pour avoir Form1 , Form2 , Form3 afin de les exploiter dans différentes pages de codes ( Modules , public class , etc )
    oui mais ce n'est pas judicieux, tes forms doivent avoir des noms reconnaissables FormMain, FormClient etc...

    Citation Envoyé par propi Voir le message
    2> peut-on exploiter deux boites dialogues en même temps ex: ouvrir FontDialog1.ShowDialog() et ColorDialog1.ShowDialog() ensembles en multithread pour modifier une sélection de texte commune ?
    le mieux est que tu fasses ton propre form de sélection de font et de couleur, qui pourront être sur la même page
    les fenetres classiques de windows ne peuvent pas être appelée en même temps

    Citation Envoyé par propi Voir le message
    peut-on utiliser un backgroundworker dans un module si oui quelle syntaxe ? et enfin pourquoi lorsque je mets une ligne de traitement de texte comme la fonction RichTextBox1.Find dans un backgroundworker ça fonctionne pas et hors backgroundworker ça fonctionne ?
    quand tu poses un backgroundworker (ou autre chose) sur un form, visual studio génère le code vb qui va avec ton action
    tu peux regarder ce code dans le fichier caché .designer.vb associé à chaque form (il y a un icone en haut dans l'explorateur de solution pour afficher les fichiers cachés)
    tu verras donc comment créer un backgroundworker

    le backgroundworker est une encapsulation d'un thread et de ce qui va avec (évènements, cancellation pré cablée ...)
    depuis un thread il n'est pas possible d'accéder à un controle, ils ne peuvent etre manipulés que depuis le thread principal
    la solution de contournement de wallace1 devrait être pas mal
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre averti
    Homme Profil pro
    autodidacte
    Inscrit en
    Décembre 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 20
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    Citation Envoyé par Propi Voir le message
    Citation Envoyé par propi Voir le message
    1> est- il possible d'indexer des objets exemple form(X) avec X= 1 , 2 ,3 ... , pour avoir Form1 , Form2 , Form3 afin de les exploiter dans différentes pages de codes ( Modules , public class , etc )
    oui mais ce n'est pas judicieux, tes forms doivent avoir des noms reconnaissables FormMain, FormClient etc...
    disons qu'à la base j'avais en tête d'économiser des lignes de programmes ,
    sur un petit exemple

    j'ai trois labels dans Form1 ( label1 , label4 et label15 ) , je veux changer leur texte à partir de n'importe quel endroit via un clic sur bouton , j'appel une fonction dans un module qui change le texte du label souhaité , form1.LabelX.text = " texte changé " avec X en variable qui sera = à 1 , 4 ou 15

    plutôt que d’écrire dans chaque endroits form1.Label4.text = " texte changé " ou form1.Label1.text = " texte changé " etc..
    c’était l'idée pour une fonction plus volumineuse qui se répète pour pas avoir à la réécrire , après effectivement c’était peut être pas une bonne solution.

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    il y a bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unform.controls("label" & i).text = "changé"

    après poser sur 2 forms les 3 mêmes labels qui font la même chose, ca revient au même que d'écrire 2x le même code, quand on peut on évite
    (usercontrol)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    il y a bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unform.controls("label" & i).text = "changé"

    après poser sur 2 forms les 3 mêmes labels qui font la même chose, ca revient au même que d'écrire 2x le même code, quand on peut on évite
    (usercontrol)
    je dirais même plus .....l'héritage
    OP il faut creuser de ce côté là.

Discussions similaires

  1. Pb plusieurs boites de dialogues
    Par schnito dans le forum MFC
    Réponses: 10
    Dernier message: 25/02/2004, 21h44
  2. [MFC] rendre une boite de dialogue inactive
    Par Vestaproman dans le forum MFC
    Réponses: 8
    Dernier message: 22/01/2004, 14h09
  3. Affichage d'une boite de dialogue nonmodale avec MFC
    Par the.cable.guy dans le forum Windows
    Réponses: 3
    Dernier message: 04/07/2003, 17h59
  4. Réponses: 5
    Dernier message: 04/04/2003, 15h02
  5. Comment cree une boite de dialogue parcourir
    Par kenshi dans le forum MFC
    Réponses: 5
    Dernier message: 06/01/2003, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo