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 :

[VB.NET] - Enregistrement texte provenant d'un MDIChild


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Par défaut [VB.NET] - Enregistrement texte provenant d'un MDIChild
    Bonjour,
    Je suis débutant et je fais mon propre éditeur de texte pour apprendre le VB.Net.

    J'ai une application construite de la façon suivante :
    frmParent = MDIParent
    frmNew = MDIChild qui contient un RichTextBox nommé rtb.

    Tout cela me permet quand on fait nouveau de créer plusieurs instance de frmNew.

    Mon pb est le suivant, je ne sais pas comment récupérer le contenu de mon rtb sur la fenêtre active.
    Je sais reconnaitre la fenêtre active mais pas le contenu de mon rtb sur cette fenêtre.

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
            Try
                With SDF
                    .AddExtension = False
                    .CheckPathExists = True
                    .CreatePrompt = False
                    .OverwritePrompt = True
                    .ValidateNames = True
                    .ShowHelp = True
                    .DefaultExt = "rtf"
                    .FileName = strFilename
                    .Filter = "RTF files (*.rtf) |*.rtf|TXT files (*.txt) |*.txt|All files|*.*"
                    .FilterIndex = 1
     
                    If .ShowDialog = DialogResult.OK Then
                        My.Computer.FileSystem.WriteAllText(.FileName, ActiveMdiChild.Text, False)
                    End If
     
                End With
            Catch ex As Exception
                MessageBox.Show(ex.Message, Me.Text)
            End Try
    Dans ma condition if on vois bien ActiveMdiChild.text donc en fait là j'enregistre le nom de la fenêtre dans mon fichier et non le contenu de mon rtb.

    Si vous pouviez m'aider car là je galère et ne trouve plus.

    Merci par avance

    ++
    Tef

    P.S : J'ai Visual Studio 2005 Beta 2 si ça peux aider

  2. #2
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Salut,


    Merci de te mettre en ordre avec les règles du forum... (Titre conforme + code entre balises => bouton Editer dans ton post ).

    Pour avoir accès à ton rtb, déclare le "public" dans sa propriété "Modifiers".
    Tu pourras y accéder comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveMdiChild.rtb.Text
    @+

  3. #3
    Membre averti
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Par défaut
    Bonjour et merci pour la réponse rapide

    J'ai fait comme tu m'as dit. J'ai mis dans modifiers mon rtb de mon Form frmNew sur public mais je n'y ai pas accès dans mon Form frmParent.

    Je comprends pas pourquoi

    Cela fait un petit moment maintenant que je cherche (pas en minute ou heure mais en jour ) et là je sèche complètement

    Si tu as une idée je suis preneur.

    P.S : Merci et désolé pour les règles. Je pense avoir tout remis en conformité dans mon précédent post

  4. #4
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Peut-être faut-il faire un cast du type de ta MdiChild pour y avoir accès...

    Je ne connais pas bien VB, mais en C# ce serait du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((frmNew)frmParent.ActiveMDIChild).rtb.Text
    @+

  5. #5
    Membre averti
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Par défaut
    désolé mais je n'ai pas trouvé ce que tu m'as dit

    Je vois pas comment faire

    Merci par avance pour vos aides

  6. #6
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Bonjour Tefonline
    Il me semble (mais je peux me tromper) que tu pars vers une voie un peu "bricolo"(excuses le terme )
    Il serait preferable dans un premier temps de te poser la question de l'intérêt de recupérer le RichTextBox.Text d'une fenêtre fille par la fenêtre Container.
    Pour être plus clair que viennent faire ici des considérations graphiques alors que toute évidence tu cherches à résoudre un problème 'Metier'.
    C'est donc que tu n'as pas correctement 'pensé' ton application, ou c'est que tu commences seulement à la penser alors que tu as commencé une interface utilisateur.
    Grossièrement, je dirai qu'une Form dite MDIParent n'est jamais qu'un container graphique qui propose en plus par exemple un Menu permettant d'avoir accès à différentes fonctionnalités 'Metiers'.
    Tout ce qui concerne la gestion notamment du RichTextBox et son traitement dans FormNew doivent être réalisés par FormNew.
    Si tu ne vois pas trop ce que je racontes prends alors le temps de nous expliquer precisement l'intention de ta démarche par rapport à quel cahier des charges
    Nous pourrons certainement te guider plus efficacement

  7. #7
    Membre averti
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Par défaut
    Bonjour neguib et merci pour ta réponse

    Voilà je vais expliquer un peu plus ce que je veux tu as raison
    Je suis un débutant en VB.Net. Je développais il y a de cela pas mal de temps en VB6 mais d'une cela fait un moment et en plus le VB.Net offre une nouvelle vision du développement que je dois réapprendre. J'ai toujours appris les langage par l'exemple car je trouve que c'est ce qu'il y a de mieux et au fur et à mesure, je rajouterais des fonctionnalitées comme par exemple un systeme d'onglet etc...

    Je veux donc créer mon propre éditeur de texte pour du txt et du rtf.
    C'est comme un Wordpad mais en amélioré car je pourrais créer plusieurs texte comme dans word et non pas un à la fois. Pour ça, je créer des instances de mon frmNew qui contient un RichTextBox nommé rtb dans mon frmParent qui est le MDIParent.

    Quand je veux enregistrer mon texte, je veux enregistrer le document actif dans un fichier via SaveFileDialog. Le pb est que je ne sais pas comment enregistrer le document actif.

    De plus avec cela, quand j'enregistre mon fichier, j'ai pas l'extension qui se met automatiquement mais juste le nom du fichier avec dedans le nom du document et non le contenu du document.

    Voilà, j'espère que j'ai été clair

    Je te remercie par avance pour ton aide

  8. #8
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    ok j'y vois plus clair
    Bon ce qui suit se limite pour l'instant aux fichiers .txt

    1. SaveFileDialog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    'Dans une quelconque méthode d'evenement utilisateur
      Dim MySaveDialog As New SaveFileDialog()
      With MySaveDialog
         .AddExtension = True
         .DefaultExt = "txt"
         .Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
         .FilterIndex = 1
         If (.ShowDialog() = DialogResult.OK) Then Me.Enregistrer(.FileName)
      End With
    2. Enregistrer le document .txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Private Function Enregistrer(ByVal filePath As String) As Boolean
       Dim saveSuccess As Boolean = False
       Dim sw As System.IO.StreamWriter
       Try
          sw = New System.IO.StreamWriter(filePath)
          sw.Write(Me.RichTextBox1.Text)
          sw.Flush()
          saveSuccess = True
       Catch e As Exception
          MessageBox.Show(e.Message)
       Finally
          If Not(sw Is Nothing) Then sw.Close
       End Try
       Return saveSuccess
    End Function

  9. #9
    Membre averti
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Par défaut
    Merci neguib
    Alors pour le SaveFileDialog ok je me suis trompé sur le AddExtension
    Merci

    Citation Envoyé par neguib
    sw.Write(Me.RichTextBox1.Text)
    Ensuite le pb est que je n'arrive toujours pas à choper mon controle rtb (RichTextBox) se situant dans mon frmNew car je pense que ce code doit-être mis dans mon frmParent qui est mon mdiParent qui contient le code Enregistrer ?

    J'ai essayé de mettre ce controle en Public dans Modifiers mais cela ne change rien.

    Je te remercie vraiment du temps que tu prends à m'aider. C'est réellement super super de ta part J'essaye aussi de chercher de mon côté mais pas facile facile

  10. #10
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Ben evidemment si tu m'avais lu
    Citation Envoyé par neguib
    Tout ce qui concerne la gestion notamment du RichTextBox et son traitement dans FormNew doivent être réalisés par FormNew.

  11. #11
    Membre averti
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Par défaut
    Citation Envoyé par neguib
    Ben evidemment si tu m'avais lu
    Citation Envoyé par neguib
    Tout ce qui concerne la gestion notamment du RichTextBox et son traitement dans FormNew doivent être réalisés par FormNew.
    oui oui je t'ai lu ne le prend pas mal
    Juste que je suis en train de m'embrouiller les pinceaux là. J'ai du code pleins les yeux en essayant de me dépatouiller de tout cela.

    Si je suis ce que tu dis, tout ce qui concerne le RichTextBox et son traitement dans frmNew doit être réaliser par frmNew, je place donc ta Fonction Enregistrer dans mon frmNew. Donc bien évidemment, la ligne de code sw.Write(Me.rtb.text) est bien reconnu. Magnifique mais seulement dans mon code pour enregistrer mon document qui se trouve dans mon frmParent (le MDIParent) il ne reconnait pas ma fonction Enregistrer.

    J'ai l'impression que c'est un cercle vicieux ou alors que je suis pas en train de réfléchir de la bonne façon

  12. #12
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Que fait ce code dans FParent qui tout au plus affiche un Menu point Final
    Crée également un Menu dans FNew avec Enregistrer et tu verras qu'à son ouverture Enregistrer fusionnera avec le Menu de la penêtre principal mais quand tu appuies dessus c'est bien le code prévu dans FNew qui agira
    allège un peu ta FParent
    Sinon racontes tout ce que tu ne m'a paps encore dit sur ton Usine à gaz

  13. #13
    Membre averti
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Par défaut
    Bonjour.
    Je fais juste remonter ce message pour :
    - Remercier SLE et neguib qui ont pris le temps d'essayer de m'aider
    - Pour résoudre ce post car j'ai trouvé la réponse.

    En fait j'utilisais pas très bien la gestion du mdi et des instances. Merci bcp pour m'avoir mis sur la voie. J'ai vu ce tutorial : http://plasserre.developpez.com/v4-4.htm

    Tout simplement bien expliqué.

    Merci pour ce forum excellent.

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Enregistrement des propriétés dans l'éditeur.
    Par leSeb dans le forum Windows Forms
    Réponses: 15
    Dernier message: 26/01/2006, 11h33
  2. [VB.NET] Enregistrer une BDD sous un autre format
    Par botanique dans le forum Windows Forms
    Réponses: 9
    Dernier message: 16/01/2006, 14h42
  3. [VB.NET] Fichier text et byte()
    Par nmerydem dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/11/2004, 17h28
  4. [VB.NET] Centrage text
    Par Emcy dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/08/2004, 09h24
  5. [VB.NET] Enregistrement des éléments d'une listBox
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 9
    Dernier message: 18/05/2004, 14h48

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