2017-10-20 70 views
0

Par exemple à l'intérieur du RichTextbox J'ai le texte:Comment puis-je lire le texte de richTextbox et conserver le format du texte?

Hello world 
Hello hi 

Hi all 

Maintenant, je veux lire ce texte avec ce format, y compris la ligne/s vide puis à écrire de nouveau au même fichier le même texte avec ou sans des modifications comme du texte supprimé ou du texte ajouté.

Par exemple, si je supprime le tout alors le texte pour écrire retour sera dans ce format:

Hello world 
Hello hi 

Hi 

Juste sans tous Ou

Hello world 
Hello hi 

Hi all everyone 

Alors maintenant, il va écrire le même texte mais avec tout le monde mais gardera le format.

J'ai essayé mais en ajoutant trop de lignes vides et des espaces qui n'était pas avant:

var lines = richTextBox1.Text.Split('\n'); 
File.WriteAllLines(fileName, lines); 

Alors j'ai essayé:

var text = richTextBox1.Text; 
File.WriteAllText(fileName, text); 

Cela écrit au fichier le même texte avec les changements mais il n'a pas gardé le format écrit le texte dans le fichier comme une ligne.

+0

Pour enregistrer: 'richTextBox1.SaveFile (fileName);' Pour charger: 'richTextBox1.LoadFile (fileName);' – LarsTech

Répondre

0

Vous devez remplacer "\ n" avec "\ r \ n"

var text = richTextBox1.Text; 
text = text.Replace("\n", "\r\n"); 
File.WriteAllText(fileName, text); 
0

Eh bien, il y a plusieurs options ici, dont aucun texte entraîner le découpage.

Note: Tout le code ci-dessous utilise une variable privée qui a le chemin du fichier sous forme de chaîne:

public partial class Form1 : Form 
{ 
    private const string filePath = @"f:\public\temp\temp.txt"; 

La première est de sauver simplement tout le texte (y compris les caractères \r\n) en utilisant le Text la propriété, ainsi que File.ReadAllText et File.WriteAllText:

// Load text on Form Load 
private void Form1_Load(object sender, EventArgs e) 
{ 
    if (File.Exists(filePath)) 
    { 
     richTextBox1.Text = File.ReadAllText(filePath); 
    } 
} 

// Save text on button click 
private void button1_Click(object sender, EventArgs e) 
{ 
    File.WriteAllText(filePath, richTextBox1.Text); 
} 

Si vous voulez faire ligne par ligne, vous pouvez utiliser File.ReadAllLines et File.WriteAllLines avec le Lines propriété du RichTextBox:

// Load text on Form Load 
private void Form1_Load(object sender, EventArgs e) 
{ 
    if (File.Exists(filePath)) 
    { 
     richTextBox1.Lines = File.ReadAllLines(filePath); 
    } 
} 

// Save text on button click 
private void button1_Click(object sender, EventArgs e) 
{ 
    File.WriteAllLines(filePath, richTextBox1.Lines); 
} 

Enfin, vous pouvez utiliser le haut-SaveFile et LoadFile méthodes de la classe RichTextBox. Cette méthode va écrire des métadonnées dans le fichier, donc si vous l'ouvrez dans le bloc-notes, vous verrez des caractères supplémentaires qui incluent toutes sortes d'informations de format. À cause de cela, j'ai ajouté un bloc try/catch autour de l'appel à LoadFile, car il lancera et exception si le fichier n'a pas le format correct, et je revenir à la charger avec ReadAllText:

// Load text on Form Load 
private void Form1_Load(object sender, EventArgs e) 
{ 
    if (File.Exists(filePath)) 
    { 
     try 
     { 
      richTextBox1.LoadFile(filePath); 
     } 
     catch (ArgumentException) 
     { 
      // Fall back to plain text method if the 
      // file wasn't created by the RichTextbox 
      richTextBox1.Text = File.ReadAllText(filePath); 
     } 
    } 
} 

// Save text on button click 
private void button1_Click(object sender, EventArgs e) 
{ 
    richTextBox1.SaveFile(filePath); 
}