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

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

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

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

Открываю документ txt, а там:
{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcha rset204 Microsoft Sans Serif;}{\f1\fnil\fcharset0 Microsoft Sans Serif;}}
{\colortbl ;\red255\green0\blue0;\red0\green128\blu e0;}
\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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.10.2018, 23:02
Ответы с готовыми решениями:

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

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

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

1
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
23.10.2018, 02:51
Цитата Сообщение от Steelandrew Посмотреть сообщение
Ещё меня смущает то, что в пункте "сохранить как" нельзя выбрать формат документа, в котором хочешь сохранить строку. Только в rtf сохраняет.
Здравствуйте, прочтите, пожалуйста, внимательно
Чтобы сохранить содержимое элемента управления в файл
(пункт 2)
У элемента собственный метод для сохранения и он предполагает, что данные сохраняться будут в RTF формате.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.10.2018, 02:51
Помогаю со студенческими работами здесь

Сохранение в .txt
Здравствуйте, меня интересует сохранение текста в файл. using (FileStream fs = new FileStream(&quot;C:\\Users\\date.txt&quot;,...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru