Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
-135 / 40 / 6
Регистрация: 07.08.2013
Сообщений: 1,092
Записей в блоге: 1
1
.NET 4.x

Почему не сохраняется формат текста из WebBrowser?

01.04.2015, 20:34. Показов 902. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток!

На форме WebBrowser в котором открываю HTML-страницу.
Редактирую в нем текст - делаю выделенный текст жирным
VB.NET
1
_Doc.execCommand("Bold", False, Nothing)
затем сохраняю
VB.NET
1
2
3
4
5
6
7
8
  Dim SaveFileDialog As New SaveFileDialog
        SaveFileDialog.Filter = "HTML файлы|*.html; *.htm"  '  "Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*"
        If (SaveFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then
            Dim FileName As String = SaveFileDialog.FileName
            ' Здесь добавить код для сохранения содержимого формы в файл.
            Dim MSDNpage As String = WebBrowser1.DocumentText
            My.Computer.FileSystem.WriteAllText(SaveFileDialog.FileName, MSDNpage, False)
        End If
При проверке, текст, который я перевел в жирный, снова стал нормальным.

Помогите разобраться в чем ошибка.

Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2015, 20:34
Ответы с готовыми решениями:

Почему в memo поле сохраняется только часть текста из Richtextbox?
Добрый день, подскажите пожалуйста, в чем проблема: сохраняю текст из richtextbox.rtf в поле Memo...

Массив не сохраняется, почему ?
Вот код. #include <stdio.h> #include <regex.h> #include <ctype.h> #include <stdlib.h> #include...

Не сохраняется холст в картинку. Почему?
Привет всем. На холст загружаю одну картинку и сохранение работает. Потом в этот же холст загружаю...

Почему не сохраняется в векторе строка?
Здравствуйте! Проблема в том, что строки не сохраняются в векторе строк, хотя передаю их по ссылке:...

16
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
02.04.2015, 12:41 2
Цитата Сообщение от Anderis49 Посмотреть сообщение
в чем ошибка
А выполнение этих команд не меняет содержимое строки DocumentText
Вот попробуй
VB.NET
1
2
3
4
5
6
7
8
9
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        
        WebBrowser1.DocumentText = "ggg"
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.WebBrowser1.Document.ExecCommand("bold", False, True)
        MsgBox(WebBrowser1.DocumentText & vbCrLf & WebBrowser1.Document.Body.InnerHtml)
    End Sub
выдели текст и сделай его жирным нажатием по кнопке2. В итоге тебе в месиджбоксе выскочит значение и DocumentText и Document.Body.InnerHtml. Разница видна.
0
-135 / 40 / 6
Регистрация: 07.08.2013
Сообщений: 1,092
Записей в блоге: 1
02.04.2015, 16:10  [ТС] 3
Цитата Сообщение от Юпатов Дмитрий Посмотреть сообщение
Вот попробуй
Попробовал!
Никакой разницы, текст в месиджбоксе одинаково НЕ жирный.
0
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
02.04.2015, 23:28 4
Цитата Сообщение от Anderis49 Посмотреть сообщение
Попробовал!
Никакой разницы, текст в месиджбоксе одинаково НЕ жирный.
Ну да, а теги Strong вокруг него не в счет?
Миниатюры
Почему не сохраняется формат текста из WebBrowser?  
1
-135 / 40 / 6
Регистрация: 07.08.2013
Сообщений: 1,092
Записей в блоге: 1
03.04.2015, 08:57  [ТС] 5
Цитата Сообщение от Юпатов Дмитрий Посмотреть сообщение
а теги Strong вокруг него
А почему тег "Strong" на фото стоит после "стр" - "стр<Strong>аница<\Strong>", а жирным печатается всё слово "страница"?
0
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
03.04.2015, 09:22 6
Цитата Сообщение от Anderis49 Посмотреть сообщение
А почему тег "Strong" на фото стоит после "стр" - "стр<Strong>аница<\Strong>", а жирным печатается всё слово "страница"?
ничего подобного. Посмотри внимательнее! Жирным печатается "страница"
0
-135 / 40 / 6
Регистрация: 07.08.2013
Сообщений: 1,092
Записей в блоге: 1
03.04.2015, 09:56  [ТС] 7
Цитата Сообщение от Anderis49 Посмотреть сообщение
Юпатов Дми
Юпатов Дмитрий, Вот ваш код.
Я увеличил текст в msgbox чтобы было лучше видно одинаковость написания.
Но у вас, действительно, текст жирный.
Миниатюры
Почему не сохраняется формат текста из WebBrowser?  
0
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
03.04.2015, 10:00 8
А почему в webbrowser не видно полужирного? Перед тем, как нажать на кнопку, надо выделить фрагмент текста в нем. не?
0
-135 / 40 / 6
Регистрация: 07.08.2013
Сообщений: 1,092
Записей в блоге: 1
03.04.2015, 10:03  [ТС] 9
Цитата Сообщение от Anderis49 Посмотреть сообщение
Юпатов Дми
Юпатов Дмитрий, Вот ваш код.
Я увеличил текст в msgbox чтобы было лучше видно одинаковость написания.

Кроме того, я сохранил страницу. Вот ее код в HTML
Выделять текст в webbrowser или нет, при сохранении текст обычный.
Миниатюры
Почему не сохраняется формат текста из WebBrowser?  
0
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
03.04.2015, 10:12 10
Цитата Сообщение от Anderis49 Посмотреть сообщение
Я увеличил текст в msgbox чтобы было лучше видно одинаковость написания.
Ничего не понял, зачем это? Если перед нажатием кнопки текст не выделялся, то одинаковость будет полная, понятно и так.
Цитата Сообщение от Anderis49 Посмотреть сообщение
Выделять текст в webbrowser или нет, при сохранении текст обычный.
Код сохранения тот, что в первом посте виден? Чему мы тогда удивляемся?
А надо бы взять исходный documenttext и в нем содержимое между тегами body заменить на Document.Body.InnerHtml, получаемый после выполнения execcomand
0
-135 / 40 / 6
Регистрация: 07.08.2013
Сообщений: 1,092
Записей в блоге: 1
03.04.2015, 10:30  [ТС] 11
Цитата Сообщение от Юпатов Дмитрий Посмотреть сообщение
Код сохранения тот, что в первом посте виден? Чему мы тогда удивляемся?
А надо бы взять исходный documenttext и в нем содержимое между тегами body заменить на Document.Body.InnerHtml, получаемый после выполнения execcomand
Я сохранял и с выделением текста в webbrowser'е и без выделения.
Сохраняется и то и другое как я показал на картинке, т.е. не жирный.

Мне нужно, чтобы можно было редактировать текст в webbrowser'е и потом отредактированный текст сохранить.
В сети ничего не нашел, поэтому обращаюсь за помощью сюда.
0
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
03.04.2015, 10:36 12
Цитата Сообщение от Anderis49 Посмотреть сообщение
Я сохранял и с выделением текста в webbrowser'е и без выделения.
Важно не то, что сохранял, а как
Ты сохраняешь DocumentText, а он статичен.
Смотри:
код загружаемой страницы
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>В чащах юга жил бы цитрус</title>
</head>
 
<body>
В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!
</body>
 
</html>

Рис.1 - форма на старте после загрузки
Рис.2 - выделили слово фальшивый и нажали кнопку.
Рис.3 - что получилось в нашем webbrowser после этого.

Теперь к вопросу о сохранении.
Твой метод: тупо сохранить строку получаемую из DocumentText
Я предлагаю:
Цитата Сообщение от Юпатов Дмитрий Посмотреть сообщение
взять исходный documenttext и в нем содержимое между тегами body заменить на Document.Body.InnerHtml, получаемый после выполнения execcomand
Разницу видишь?
Миниатюры
Почему не сохраняется формат текста из WebBrowser?   Почему не сохраняется формат текста из WebBrowser?   Почему не сохраняется формат текста из WebBrowser?  

1
-135 / 40 / 6
Регистрация: 07.08.2013
Сообщений: 1,092
Записей в блоге: 1
03.04.2015, 10:52  [ТС] 13
Цитата Сообщение от Юпатов Дмитрий Посмотреть сообщение
Разницу видишь?
Да! Разница есть.
Но я пока очень слаб в программировании.
Цитата Сообщение от Юпатов Дмитрий Посмотреть сообщение
взять исходный documenttext и в нем содержимое между тегами body заменить на Document.Body.InnerHtml, получаемый после выполнения execcomand
Подскажите, пожалуйста, где об этом можно прочитать.

Большое вам спасибо за ваше терпение и извините, что отнимаю у вас время.
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
03.04.2015, 21:02 14
наверое вот это вам пытался сказать Двмитрий?

VB.NET
1
2
Dim MSDNpage As String = WebBrowser1.Document.Body.InnerHtml
My.Computer.FileSystem.WriteAllText(SaveFileDialog.FileName, MSDNpage, False)
Anderis49, вам найти выделенный текст в коде страницы (своего рода парсинг) и вставить в начале и конце тэги

HTML5
1
<STRONG>НАЙДЕННЫЙ ВЫДЕЛЕННЫЙ ТЕКСТ</STRONG>
и записать полученный текст в файл с расширением *.HTML и тогда ваш текст сохранится жирным

Добавлено через 17 минут
Anderis49, вот твой код, который сохраняет страницу, и выделенный текст делает ЖИРНЫМ. у меня все работает...

VB.NET
1
2
3
4
5
6
7
8
9
10
11
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        WebBrowser1.Navigate("D:\1.html")
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        WebBrowser1.Document.ExecCommand("bold", False, True)
        WebBrowser1.Document.ExecCommand("copy", False, True)
        Dim seltxt As String = Clipboard.GetText : Clipboard.Clear()
 
        Dim txtedit As String = Replace(WebBrowser1.DocumentText, seltxt, "<STRONG>" & seltxt & "</STRONG>")
        IO.File.WriteAllText("D:\1.html", txtedit)
    End Sub
Добавлено через 8 минут
Anderis49, а лучще вот так, не теряя ваш клипборд во время этой операции

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        WebBrowser1.Navigate("D:\1.html")
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        WebBrowser1.Document.ExecCommand("bold", False, True)
        Dim tmptxt As String = Clipboard.GetText
        WebBrowser1.Document.ExecCommand("copy", False, True)
        Dim seltxt As String = Clipboard.GetText : Clipboard.Clear() : Clipboard.SetText(tmptxt)
 
        Dim txtedit As String = Replace(WebBrowser1.DocumentText, seltxt, "<STRONG>" & seltxt & "</STRONG>")
        IO.File.WriteAllText("D:\1.html", txtedit)
    End Sub
0
-135 / 40 / 6
Регистрация: 07.08.2013
Сообщений: 1,092
Записей в блоге: 1
04.04.2015, 09:38  [ТС] 15
Цитата Сообщение от Yury Komar Посмотреть сообщение
: Clipboard.SetText(tmptxt)
Ругается на это, пишет "Сбой при выполнении запрошенной операции с буфером обмена."

Перенес так
VB.NET
1
2
3
   Dim seltxt As String = Clipboard.GetText
        Clipboard.Clear()
        Clipboard.SetText(tmptxt)
теперь не ругается, но и жирным текст не делает.
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
04.04.2015, 10:25 16
Anderis49, делает если этот текст находится на одной строке, если несколько строк, тут уже проблема. тогда юзать надо WebBrowser1.Document.Body.InnerHtml
0
-135 / 40 / 6
Регистрация: 07.08.2013
Сообщений: 1,092
Записей в блоге: 1
04.04.2015, 10:48  [ТС] 17
А получилось вот так
VB.NET
1
2
3
4
5
6
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WebBrowser1.Document.ExecCommand("bold", True, True)
        Dim tmptxt As String = WebBrowser1.Document.ActiveElement.InnerText  
        Dim txtedit As String = Replace(WebBrowser1.DocumentText, tmptxt, "<STRONG>" & tmptxt & "</STRONG>")
        IO.File.WriteAllText("D:\2q.html", txtedit, System.Text.Encoding.UTF8)
    End Sub
Большое спасибо всем помогавшим.
0
04.04.2015, 10:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2015, 10:48
Помогаю со студенческими работами здесь

Почему не сохраняется переменная сессии в чате?
Пытаюсь построить чат из примера (Чат на ASP: от простого к сложному. Часть 1 ): global.asa : ...

Не сохраняется форматирование текста в документе
Здравствуйте. Такая проблема. Печатал в подарок один молитвослов. Закачал пару церковно славянских...

Сохранить формат текста полученного из textarea и вывод этого текста
есть вот такой textarea &lt;TEXTAREA cols=&quot;96&quot; wrap=&quot;hard&quot; class=&quot;forms&quot; id=&quot;description&quot;...

Почему не сохраняется значение переменной класса из метода?
Есть переменная count. Есть ситуация, в которой когда объект перетаскивается на назначенное поле на...


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

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