Partage

[VB.net] retour à la ligne

Sujet résolu
Le 6 juin 2011 à 21:25:07

Bonjour,
J'aimerais enregistrer des retour à la ligne de ma textbox vers un fichier texte, mais je n'y arrive pas, tout le texte de ma textbox est enregistrer dans mon fichier .txt, mais pas les retour à la ligne.
Voici mon code.
Function enregistrer() As System.IO.StreamWriter


        If Form2.extension Is Nothing Then

            System.IO.File.WriteAllLines(openFileDialog1.FileName, New String() {RichTextBox1.Text})

        Else
            Dim fichier As New StreamWriter(Form2.extension)
            fichier.WriteLine(RichTextBox1.Text)
            fichier.Close()
        End If

        Return Nothing
    End Function
Publicité
Le 6 juin 2011 à 21:25:07
Le 7 juin 2011 à 22:05:34

unction enregistrer() As System.IO.StreamWriter


        If Form2.extension Is Nothing Then

            System.IO.File.WriteAllLines(openFileDialog1.FileName, New String() {RichTextBox1.Text})

        Else
            Dim fichier As New StreamWriter(Form2.extension)
            fichier.WriteLine(RichTextBox1.Text.Replace(Chr(10), vbCrLf))
            fichier.Close()
        End If

        Return Nothing
    End Function


Essaye ceci. Non testé mais ça doit rouler !
Le 7 juin 2011 à 23:18:17

Encore mieux :
fichier.WriteLine(RichTextBox1.Text.Replace(Convert.ToChar(10), Environment.NewLine))

:-°

PS : Pourquoi retourner un StreamWriter si tu retournes toujours Nothing ?
Le 7 juin 2011 à 23:38:24

héhé merci sa fonctionne...
Pouvez-vous me dire que veut dire .replace et convert etc..

j'ai une autre question, quand je clique sur "maximize" mon application deviens grande, mais elle est en bas du menu démarré, j'aimerais faire comme notepad quand il est agrandi il s'arrête avant le menu démarré.
Et aussi j'ai une richtextbox dans ma form et j'ai centré, mais quand j'agrandie mon application le haut est la gauche reste centré, mais pas le bas ni la droit.
Le 8 juin 2011 à 4:41:13

Bonjour,

Pour commencer : Pour remplacer dans une chaîne de caractères Aethec et Lakh92 ont déjà montré la manière de procéder :
'Dans une variable
Dim newText As String = richTextBoxText1.Text.Replace("a"c, "1"c)
'Directement dans le contenu de la RichTextBox
richTextBox1.Text = richTextBoxText1.Text.Replace("a"c, "1"c)
'S'il faut remplacer tout les A (minuscules ou majuscules) on peut faire par exemple
richTextBoxText1.Text.Replace("a"c, "1"c).Replace("A"c, "1"c)
"1"c signifie le caractère 1 là où "1" signifie la chaîne de caractères 1 dans l'exemple donné, on peut indifféremment utiliser l'un ou l'autre sous réserve de rester constant - n'utiliser que des caractères ou que des chaînes


Ensuite je comprends pas trop le problème d'origine, j'ai beau tenter de toutes les façons que je veux, la sauvegarde conserve systématiquement les retours à la ligne chez moi o_O
Au passage une autre méthode pour sauvegarder le contenu d'une RichTextBox dans un fichier :
richTextBox1.SaveFile("chemin du fichier", RichTextBoxStreamType.PlainText)

Enfin petit détail qui me chipote, je trouve bizarre d'utiliser un OpenFileDialog pour écrire dans un fichier, ne serait-il pas mieux d'utiliser un SaveFileDialog ?

Pour résumer, voici une procédure complète avec gestion des erreurs de la sauvegarde lors du clic sur le bouton du contenu d'une RichTextBox dans un fichier sélectionné par l'utilisateur,
dont on change les A (minuscules ou majuscules) par des 1 directement dans la RichTextBox :
'J'utilise pas les mêmes noms de contrôles mais ça devrait pas être trop dur de savoir qui est qui
Private Sub saveContentButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles saveContentButton.Click
    ' Création d'un nouveau SaveFileDialog avec définition de certaines de ses propriétés
    ' Si cette syntaxe gêne on "pourrait" aussi écrire
    ' Using sfd As New SaveFileDialog()
    '     sfd.DefaultExt = "txt"
    '     sfd.Filter = ...
    Using sfd As New SaveFileDialog() With {
        .DefaultExt = "txt",
        .Filter = "Text Files (.txt)|*.txt",
        .OverwritePrompt = True,
        .Title = "Save as..."
    }
        If sfd.ShowDialog(Me) = DialogResult.OK Then
            ' Si l'utilisateur a bien choisi un fichier on remplace les A
            contentRichTextBox.Text = contentRichTextBox.Text.Replace("a"c, "1"c).Replace("A"c, "1"c)
            Try
                ' On tente d'enregistrer le contenu dans le fichier
                contentRichTextBox.SaveFile(sfd.FileName, RichTextBoxStreamType.PlainText)
            Catch ioex As IO.IOException
                ' En cas de souci on informe l'utilisateur que l'opération a été interrompue
                MessageBox.Show(Me, ioex.Message, "Operation interrupted", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End If
    End Using
End Sub

Cordialement !

PS: Si certaines méthodes, propriétés ou mots clefs te sont étrangers, il te faudra les chercher dans la documentation officielle (une bonne habitude à prendre au passage ;) ) pour ce faire tu peux mettre le curseur de saisie sur l’élément concerné dans l'éditeur et appuyer sur F1 et/ou le rechercher sur cette page ou avec ton moteur de recherche préféré (souvent il suffit de précéder la recherche de "msdn" pour obtenir de bons résultats).
</span>
Le 8 juin 2011 à 4:48:46

héhé merci pour les explications, mais j'ai réussi à trouver..
mais, pour les dernières question je n'es pas trouvé...

quand je clique sur "maximize" mon application deviens grande, mais elle est en bas du menu démarré, j'aimerais faire comme notepad quand il est agrandi il s'arrête avant le menu démarré.
Et aussi j'ai une richtextbox dans ma form et j'ai centré, mais quand j'agrandie mon application le haut est la gauche reste centré, mais pas le bas ni la droit.
Le 8 juin 2011 à 5:12:26

Décidément, je dois avoir un truc spécial à chaque fois chez moi ça fait pas pareil ou alors j'ai pas bien compris, moi quand je maximise ma fenêtre, elle s'arrête avant la barre des tâches (voir screen ; oui je sais les couleurs sont horribles mais c'était pour mieux y voir :p )
Image utilisateur
Quant au redimensionnement du RichTextBox, il faut que tu regardes du côté des propriétés Anchor et Dock.

Par exemple dans mon screen, le Button a son Dock sur DockStyle.Bottom pour qu'il soit collé en bas et le RichTextBox est sur DockStyle.Fill pour prendre l'espace restant
attention selon l'ordre de placement des contrôles sur le formulaire il faudra peut-être jouer avec le "Z-Index" (la superposition) à l'aide des options "Bring to front" et "Send to back" (en cliquant droit sur un contrôle dans le designer)


Cordialement
Le 8 juin 2011 à 5:32:43

je comprends pas moi il ne s'arrête pas ....
et je n'es pas de scrollbar nonplus
Le 8 juin 2011 à 12:42:56

Je signale au passage que la méthode File.WriteAllLines utilisée plus haut est censée écrire dans le fichier un ensemble de strings qui seront séparées par un retour à la ligne, ces lignes n'étant pas censées contenir de retour à la ligne elles-mêmes.

Pour écrire le contenu du fichier depuis une string qui gère elle-même les retours à la ligne, on utilise plutôt File.WriteAllText.

Donc le code de départ
System.IO.File.WriteAllLines(openFileDialog1.FileName, New String() {RichTextBox1.Text})
aurait du être
System.IO.File.WriteAllText(openFileDialog1.FileName, RichTextBox1.Text)
tout simplement. :)

Le 8 juin 2011 à 23:36:07

merci,
Mais j'ai réglé mon problème maintenant j'ai un problème avec l'affichage...

ma richtextbox est au milieu de ma form et quand j'agrandi il y a une espace en haut et sur la gauche (la marge) pour que ma richtextbox sois au milieu, mais il n'y a pas d'espace en bas et la droit.
Le 9 juin 2011 à 20:51:42

Essaye de jouer avec les Anchors, je ne m'y connais pas assez, mais c'est une propriété du Control :)
Le 10 juin 2011 à 10:49:06

c'est bon j'ai réussi à tout régler mes problèmes, merci.

[VB.net] retour à la ligne

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown