Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 9 / 0
Регистрация: 03.02.2015
Сообщений: 134
1

Сохранение документа txt

22.10.2018, 23:02. Показов 797. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем программа открывает текстовый файл, редактирует его (просто переставляет местами 2 выбранных слова) и через контекстное меню сохраняет. В rtf сохраняет как надо. А вот в txt добавляется всякий треш. То есть допустим нужно просто отредактировать и сохранить строку:
"America’s music culture would be incomplete without blues music."

Открываю документ txt, а там:
{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset204 Microsoft Sans Serif;}{\f1\fnil\fcharset0 Microsoft Sans Serif;}}
{\colortbl ;\red255\green0\blue0;\red0\green128\blue0;}
\viewkind4\uc1\pard\lang1049\f0\fs17 America\f1\rquote s \highlight1 blues\highlight0 culture would be incomplete without \highlight2 music\highlight0 music.\f0\par
}

Повторюсь, что в rtf формате нормально сохраняет.

Код контекстного меню программы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
private void Form1_Load(object sender, EventArgs e)
        {
            //создание контекстного меню
            System.Windows.Forms.ContextMenu contextMenu1;
            contextMenu1 = new System.Windows.Forms.ContextMenu();
 
            System.Windows.Forms.MenuItem menuItem1;
            menuItem1 = new System.Windows.Forms.MenuItem();
            System.Windows.Forms.MenuItem menuItem2;
            menuItem2 = new System.Windows.Forms.MenuItem();
            System.Windows.Forms.MenuItem menuItem3;
            menuItem3 = new System.Windows.Forms.MenuItem();
 
            contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { menuItem1, menuItem2, menuItem3 });
            menuItem1.Index = 0;
            menuItem1.Text = "Открыть";
            menuItem2.Index = 1;
            menuItem2.Text = "Сохранить";
            menuItem3.Index = 2;
            menuItem3.Text = "Сохранить как";
 
            richTextBox1.ContextMenu = contextMenu1;
            menuItem1.Click += new System.EventHandler(this.MenuItem1_Click);
            menuItem2.Click += new System.EventHandler(this.MenuItem2_Click);
            menuItem3.Click += new System.EventHandler(this.MenuItem3_Click);
        }
        string MyFName = "";
        private void MenuItem1_Click(object sender, System.EventArgs e)
        {
            openFileDialog1.Filter = "Текстовые файлы (*.rtf; *.txt ) | *.rtf; *.txt";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                MyFName = openFileDialog1.FileName;
                if (System.IO.Path.GetExtension(MyFName) == ".rtf")
                {
                    richTextBox1.LoadFile(MyFName, RichTextBoxStreamType.RichText);
                }
                else
                {
                    richTextBox1.LoadFile(MyFName, RichTextBoxStreamType.PlainText);
                }
            }
        }
        private void MenuItem2_Click(object sender, EventArgs e)
        {
            if (MyFName != "")
            {
                richTextBox1.SaveFile(MyFName);
            }
            else
            {
                saveFileDialog1.Filter = "Текстовые файлы (*.rtf; *.txt) | *.rtf; *.txt";
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    MyFName = saveFileDialog1.FileName;
                    richTextBox1.SaveFile(MyFName);
                }
            }
        }
        private void MenuItem3_Click(object sender, System.EventArgs e)
        {
            saveFileDialog1.Filter = "Текстовые файлы (*.rtf; *.txt) | *.rtf; *.txt";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                MyFName = saveFileDialog1.FileName;
                richTextBox1.SaveFile(MyFName);
            }
        }
Если нужно, то вот программа целиком:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
 
namespace LR2metodichka
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            button4.Enabled = false;
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            //создание контекстного меню
            System.Windows.Forms.ContextMenu contextMenu1;
            contextMenu1 = new System.Windows.Forms.ContextMenu();
 
            System.Windows.Forms.MenuItem menuItem1;
            menuItem1 = new System.Windows.Forms.MenuItem();
            System.Windows.Forms.MenuItem menuItem2;
            menuItem2 = new System.Windows.Forms.MenuItem();
            System.Windows.Forms.MenuItem menuItem3;
            menuItem3 = new System.Windows.Forms.MenuItem();
 
            contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { menuItem1, menuItem2, menuItem3 });
            menuItem1.Index = 0;
            menuItem1.Text = "Открыть";
            menuItem2.Index = 1;
            menuItem2.Text = "Сохранить";
            menuItem3.Index = 2;
            menuItem3.Text = "Сохранить как";
 
            richTextBox1.ContextMenu = contextMenu1;
            menuItem1.Click += new System.EventHandler(this.MenuItem1_Click);
            menuItem2.Click += new System.EventHandler(this.MenuItem2_Click);
            menuItem3.Click += new System.EventHandler(this.MenuItem3_Click);
        }
        string MyFName = "";
        private void MenuItem1_Click(object sender, System.EventArgs e)
        {
            openFileDialog1.Filter = "Текстовые файлы (*.rtf; *.txt ) | *.rtf; *.txt";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                MyFName = openFileDialog1.FileName;
                if (System.IO.Path.GetExtension(MyFName) == ".rtf")
                {
                    richTextBox1.LoadFile(MyFName, RichTextBoxStreamType.RichText);
                }
                else
                {
                    richTextBox1.LoadFile(MyFName, RichTextBoxStreamType.PlainText);
                }
            }
        }
        private void MenuItem2_Click(object sender, EventArgs e)
        {
            if (MyFName != "")
            {
                richTextBox1.SaveFile(MyFName);
            }
            else
            {
                saveFileDialog1.Filter = "Текстовые файлы (*.rtf; *.txt) | *.rtf; *.txt";
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    MyFName = saveFileDialog1.FileName;
                    richTextBox1.SaveFile(MyFName);
                }
            }
        }
        private void MenuItem3_Click(object sender, System.EventArgs e)
        {
            saveFileDialog1.Filter = "Текстовые файлы (*.rtf; *.txt) | *.rtf; *.txt";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                MyFName = saveFileDialog1.FileName;
                richTextBox1.SaveFile(MyFName);
            }
        }
        private void Button1_Click(object sender, EventArgs e)//Кнопка сброс
        {
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            button2.Enabled = true;
            button3.Enabled = true;
            button4.Enabled = true;
        }
 
        int result1, result2;
        private void Button2_Click(object sender, EventArgs e)//Кнопка найти первое слово
        {
            int LenText;
            textBox3.Text += "Поиск первого слова" + Environment.NewLine;
            String FWord = textBox1.Text.ToString();
            LenText = richTextBox1.Text.Length;
            result1 = FindWord(FWord, LenText);
            if (result1 != -1)
            {
                textBox3.Text += "Позиция первого слова: " + (result1 + 1) + Environment.NewLine + Environment.NewLine;
                richTextBox1.SelectionStart = result1;
                richTextBox1.SelectionLength = FWord.Length;
                richTextBox1.SelectionBackColor = Color.Red;
                button2.Enabled = false;
                if (button3.Enabled == false)
                {
                    button4.Enabled = true;
                }
            }
            else
            {
                textBox3.Text += "Слово не найдено " + Environment.NewLine + Environment.NewLine;
            }
        }
        private void Button3_Click(object sender, EventArgs e)//Кнопка найти второе слово
        {
            int LenText;
            textBox3.Text += "Поиск второго слова" + Environment.NewLine;
            String FWord = textBox2.Text.ToString();
            LenText = richTextBox1.Text.Length;
            result2 = FindWord(FWord, LenText);
            if (result2 != -1)
            {
                textBox3.Text += "Позиция второго слова: " + (result2 + 1) + Environment.NewLine + Environment.NewLine;
                richTextBox1.SelectionStart = result2;
                richTextBox1.SelectionLength = FWord.Length;
                richTextBox1.SelectionBackColor = Color.Green;
                button3.Enabled = false;
                if (button2.Enabled == false)
                {
                    button4.Enabled = true;
                }
            }
            else
            {
                textBox3.Text += "Слово не найдено " + Environment.NewLine + Environment.NewLine;
            }
        }
        int FindWord(String FWord, int n)//Метод возвращает номер позиции слова в тексте либо -1, если такого слова в тексте нет
        {
            int LenWord;
            String ComparText;
            LenWord = FWord.Length;
            for (int i = 0; i <= n - LenWord; i++)
            {
                ComparText = richTextBox1.Text.Substring(i, LenWord);
                if (ComparText == FWord)
                {
                    return i;
                }
            }
            return -1;
        }
        private void Button4_Click(object sender, EventArgs e)//Кнопка замены слов местами
        {
            if (result1 < result2)
            {
                richTextBox1.Select(result2, textBox2.Text.Length);
                richTextBox1.SelectedText = textBox1.Text.ToString();
                richTextBox1.Select(result1, textBox1.Text.Length);
                richTextBox1.SelectedText = textBox2.Text.ToString();
                textBox3.Text += "Произошла замена слов";
                button4.Enabled = false;
            }
            else
            {
                richTextBox1.Select(result1, textBox1.Text.Length);
                richTextBox1.SelectedText = textBox2.Text.ToString();
                richTextBox1.Select(result2, textBox2.Text.Length);
                richTextBox1.SelectedText = textBox1.Text.ToString();
                textBox3.Text += "Произошла замена слов";
                button4.Enabled = false;
            }
        }
        private void Button5_Click(object sender, EventArgs e)
        {
            richTextBox1.Clear();
        }
    }
}
Добавлено через 12 минут
Ещё меня смущает то, что в пункте "сохранить как" нельзя выбрать формат документа, в котором хочешь сохранить строку. Только в rtf сохраняет.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2018, 23:02
Ответы с готовыми решениями:

Сохранение текстового документа
В программе есть 3 кнопки, 1 -&quot;Сохранить как&quot;, 2 -&quot;Сохранить&quot;,3 -&quot;Открыть&quot; Суть: с помощью кнопки...

Сохранение документа Word
Здравствуйте. Как при сохранении файла указать его имя в виде текущей даты? Делал так: object...

Удаление полного слово из txt документа
Вот в чем проблема... Парюсь уже 3-ий день. У меня есть listbox. При сохранении - listbox...

Сохранение в .txt
Здравствуйте, меня интересует сохранение текста в файл. using (FileStream fs = new...

1
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
23.10.2018, 02:51 2
Цитата Сообщение от Steelandrew Посмотреть сообщение
Ещё меня смущает то, что в пункте "сохранить как" нельзя выбрать формат документа, в котором хочешь сохранить строку. Только в rtf сохраняет.
Здравствуйте, прочтите, пожалуйста, внимательно
Чтобы сохранить содержимое элемента управления в файл
(пункт 2)
У элемента собственный метод для сохранения и он предполагает, что данные сохраняться будут в RTF формате.
0
23.10.2018, 02:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2018, 02:51
Помогаю со студенческими работами здесь

Сохранение документа из шаблона MS Word
Есть шаблон MS Word shablon.docx Есть форма с несколькими TextBox и Button При нажатии на кнопку...

Сохранение данных в txt
Здравствуйте, мне помогите пожалуйста с кодом: мне нужно сделать так чтобы ответ сохранялся в txt...

Сохранение пароля в txt
Как сделать так чтобы пароль из textBox1 Сохранялся В файл Parrol.txt если Form1 -форма для ввода...

Сохранение Word документа
у меня через WebBrowser открываэться вордовский документ, который нужно сохранить под новым именем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru