- Практическое руководство. Создание средства просмотра HTML-документов в приложении Windows Forms How to: Create an HTML Document Viewer in a Windows Forms Application
- Создание средства просмотра HTML-документов To create an HTML document viewer
- Компиляция кода Compiling the Code
- Используем HTML и WebBrowser control в качестве UI для обычных windows-приложений на C#
- HTML Editor in a Windows Forms Application [closed]
- 6 Answers 6
- and and ; but if you wanted to, you could ask me about adding functionality (as described in the Developing New Functionality section). I also needed a WYSIWYG editor for a Windows Forms project that I was working on. I wrote about the items that I found here. Eventually, I ended up using something that I found on CodeProject: A Windows Forms based text editor with HTML output. This does violate (a) above in that it uses the WebBrowser control. However, I couldn’t find anything good that didn’t do this (if you don’t use the WebBrowser in some way, then you basically have to write your own HTML parser and renderer in order to handle the «What-You-See» part of WYSIWYG). The good thing about this control is that the source is easily customizable, so you can take away and add formatting options as you need (and if you want the styles to all be in-line, you can do this as well). The simplest HTML editor in Windows Forms could be showing a Ctrl + B to make the selection bold Ctrl + I to make the selection italic Ctrl + U to make the selection underlined Ctrl + A to select all text Ctrl + C to copy selection Ctrl + X to cut selection Ctrl + V to paste the selection Ctrl + K to insert a link However for a better user experience you can rely on DOM document object in WebBrower and use its execCommand method and easily run commands like Bold , Italic , Underline , InsertOrderedList , InsertUnorderedList , InsertImage , FormatBlock , ForeColor , BackColor , and etc. For example the following command inserts ordered list: Examlpe — Windows Forms HTML Editor Here I will share an example for a C# application and will show you easily you can implement an HTML editor. To use this HTML Editor class, it’s enough to have a WebBrowser control on a Form and initialize the editor this way: Then you can use a ToolStrip to show available commands and run the commands. For example: Html in windows forms This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions. Answered by: Question I want to use Editor HTML in C# of Windows From, Answers Welcome to the MSDN Forum. Here are the samples on how to develop the HTML Editor: Or if you just want the tools can be used, I think the Visual Studio, Web Expression Studio are good tools for you in Microsoft. And there are some other third party applications, such as Dreamweaver, Eclipse. etc. If you have any quesitons, please feel free to let me know. Neddy Ren[MSFT] MSDN Community Support | Feedback to us All replies Welcome to the MSDN Forum. Here are the samples on how to develop the HTML Editor: Or if you just want the tools can be used, I think the Visual Studio, Web Expression Studio are good tools for you in Microsoft. And there are some other third party applications, such as Dreamweaver, Eclipse. etc. If you have any quesitons, please feel free to let me know. Neddy Ren[MSFT] MSDN Community Support | Feedback to us The Netrix Component, the most sophisticated WinForm HTML editing control, is now available on CodePlex as **Open Source** for non-commercial usage. This includes all Plug-Ins available, such as Spell Checker, Table Designer and so on. This project was a commercial project for more than ten years and meanwhile it’s mature, stable, and feature complete. However, the traction of the WinForm world slows down and we think that it will prolong the project’s life if we make it publicly available. Введение в Windows Forms Для создания графических интерфейсов с помощью платформы .NET применяются разные технологии — Window Forms, WPF, приложения для магазина Windows Store (для ОС Windows 8/8.1/10). Однако наиболее простой и удобной платформой до сих пор остается Window Forms или формы. Данное руководство ставит своей целью дать понимание принципов создания графических интерфейсов с помощью технологии WinForms и работы основных элементов управления. Создание графического приложения Для создания графического проекта нам потребуется среда разработки Visual Studio. Поскольку наиболее распространенная пока версия Visual Studio 2013, то для данного руководства я буду использовать бесплатную версию данной среды Visual Studio Community 2013 которую можно найти на странице https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx. После установки среды и всех ее компонентов, запустим Visual Studio и создадим проект графического приложения. Для этого в меню выберем пункт File (Файл) и в подменю выберем New — > Project (Создать — > Проект). После этого перед нами откроется диалоговое окно создания нового проекта: В левой колонке выберем Windows Desktop , а в центральной части среди типов проектов — тип Windows Forms Application и дадим ему какое-нибудь имя в поле внизу. Например, назовем его HelloApp. После этого нажимаем OK. После этого Visual Studio откроет наш проект с созданными по умолчанию файлами: Большую часть пространства Visual Studio занимает графический дизайнер, который содержит форму будущего приложения. Пока она пуста и имеет только заголовок Form1. Справа находится окно файлов решения/проекта — Solution Explorer (Обозреватель решений). Там и находятся все связанные с нашим приложением файлы, в том числе файлы формы Form1.cs. Внизу справа находится окно свойств — Properties. Так как у меня в данный момент выбрана форма как элемент управления, то в этом поле отображаются свойства, связанные с формой. Теперь найдем в этом окне свойство формы Text и изменим его значение на любое другое: Таким образом мы поменяли заголовок формы. Теперь перенесем на поле какой-нибудь элемент управления, например, кнопку. Для этого найдем в левой части Visual Studio вкладку Toolbox (Панель инструментов) . Нажмем на эту вкладку, и у нас откроется панель с элементами, откуда мы можем с помощью мыши перенести на форму любой элемент: Найдем среди элементов кнопку и, захватив ее указателем мыши, перенесем на форму: Это визуальная часть. Теперь приступим к самому программированию. Добавим простейший код на языке C#, который бы выводил сообщение по нажатию кнопки. Для этого мы должны перейти в файл кода, который связан с этой формой. Если у нас не открыт файл кода, мы можем нажать на форму правой кнопкой мыши и в появившемся меню выбрать View Code (Посмотреть файл кода): Однако воспользуемся другим способом, чтобы не писать много лишнего кода. Наведем указатель мыши на кнопку и щелкнем по ней двойным щелчком. Мы автоматически попадаем в файл кода Form1.cs, который выглядит так: Добавим вывод сообщения по нажатию кнопки, изменив код следующим образом: Запуск приложения Чтобы запустить приложение в режиме отладки, нажмем на клавишу F5 или на зеленую стрелочку на панели Visual Studio. После этого запустится наша форма с одинокой кнопкой. И если мы нажмем на кнопку на форме, то нам будет отображено сообщение с приветствием. После запуска приложения студия компилирует его в файл с расширением exe. Найти данный файл можно, зайдя в папку проекта и далее в каталог bin/Debug или bin/Release Рассмотрев вкратце создание проекта графического приложения, мы можем перейти к обзору основных компонентов и начнем мы с форм.
- Html in windows forms
- Answered by:
- Question
- Answers
- All replies
- Введение в Windows Forms
- Создание графического приложения
- Запуск приложения
Практическое руководство. Создание средства просмотра HTML-документов в приложении Windows Forms How to: Create an HTML Document Viewer in a Windows Forms Application
Элемент управления можно использовать WebBrowser для отображения и печати HTML-документов, не предоставляя полный набор функций браузера Интернета. You can use the WebBrowser control to display and print HTML documents without providing the full functionality of an Internet Web browser. Это полезно, если вы хотите использовать возможности форматирования HTML, но не хотите, чтобы пользователи загружали произвольные веб-страницы, которые могут содержать ненадежные веб-элементы управления или потенциально вредоносный код скрипта. This is useful when you want to take advantage of the formatting capabilities of HTML but do not want your users to load arbitrary Web pages that may contain untrusted Web controls or potentially malicious script code. Может потребоваться ограничить возможности WebBrowser элемента управления таким образом, например, чтобы использовать его в качестве средства просмотра электронной почты HTML или для предоставления в приложении справки в формате HTML. You might want to restrict the capability of the WebBrowser control in this manner, for example, to use it as an HTML email viewer or to provide HTML-formatted help in your application.
Создание средства просмотра HTML-документов To create an HTML document viewer
Задайте для AllowWebBrowserDrop свойства значение false , чтобы запретить WebBrowser элементу управления открывать файлы, помещенные в него. Set the AllowWebBrowserDrop property to false to prevent the WebBrowser control from opening files dropped onto it.
Задайте Url для свойства расположение исходного файла для вывода. Set the Url property to the location of the initial file to display.
Компиляция кода Compiling the Code
Для этого примера требуются: This example requires:
элемент управления WebBrowser с именем webBrowser1 ; A WebBrowser control named webBrowser1 .
Используем HTML и WebBrowser control в качестве UI для обычных windows-приложений на C#
Как известно, контрол WebBrowser это просто обертка над ActiveX компонентом Internet Explorer. Следовательно он предоставляет доступ к полноценному layout-движку со всеми современными плюшками. А раз так, то попробуем (сам не знаю правда зачем) на его основе сделать пользовательский интерфейс для обычного windows-приложения.
Можно, конечно, было бы запустить в этом же процессе мини веб-сервер (на HttpListener например) и ловить запросы через него, но это слишком просто, скучно и неспортивно. Попробуем обойтись без сетевых компонентов, just for fun.
Итак, задача проста — необходимо перехватывать отправку HTML-форм и выводить новый HTML-документ, сгенерированный логикой приложения в зависимости от POST-параметров.
Прежде всего нам понадобится Windows Forms Application с одной единственной формой на которой будет один единственный контрол — WebBrowser занимающий все пространство.
Для примера рисуем пару простых страниц интерфейса (с минимальным содержимым для краткости, а так скрипты и стили добавлять по вкусу).
Примечание: X-UA-Compatible необходим для корректного отображения некоторых стилей, в данном примере они не используются, но проблема есть. Не буду вдаваться в детали, но без этого компонент рисует страницы в режиме совместимости с чем то очень старым, со всеми вытекающими последствиями.
WebBrowser предоставляет несколько событий, среди которых есть например Navigating, которое срабатывает перед тем как отправить форму или перейти по ссылке.
Практически то что нужно, но это событие не предоставляет никакой информации о post-параметрах. GET-параметры использовать не получится поскольку у наших HTML-форм атрибут action отсутствует, что приведет к тому что в качестве URL всегда будет about:blank и никакой информации о GET параметрах не будет.
Для получения более подробной информации о запросе надо подписаться на событие BeforeNavigate2 (подробнее тут) у внутреннего COM-объекта браузера, благо он доступен через свойство ActiveXInstance.
Сделать это проще всего через dynamic, чтобы не возиться с объявлением COM-интерфейсов:
Объявляем делегат:
Затем подписываемся на событие (в конструкторе формы у WebBrowser свойство ActiveXInstance будет null, потому это лучше сделать после того как окно загрузится, т.е. в OnLoad например):
Итак, в PostData лежат post-параметры в виде строки состоящей из пар ключ=значение объединенных через &. Разделяем их и укладываем в словарь:
Кроме того, в этом обработчике лучше отменить действие через параметр Cancel, чтобы лишний раз не попадать на about:blank.
Имея параметры генерируем текст новой страницы. Сюда теоретически прикручивается какой-н менеджер обработчиков, выбирающий необходимый обработчик в зависимости от параметров, которые по каким-н шаблонам будут собирать страницы из кусочков, но для краткости пока для примера просто по кнопке page1 откроем первую страницу, по кнопке page2 — вторую (имена кнопок в разметке указывать обязательно, иначе из post-параметров не определить какую именно кнопку нажали), а также заменим все строки в круглых скобках на значения параметров с такими именами:
Полученную строку с HTML-текстом записываем в свойство DocumentText WebBrowser-а.
И тут же получим бесконечный цикл перезагрузки страницы, поскольку установка этого свойства спровоцирует новый вызов OnBeforeNavigate2.
Временно отписаться от этого события не получится, поскольку вызывается оно откуда то из цикла обработки сообщений уже после того как установка DocumentText возвращает управление.
Т.о. необходимо всегда игнорировать каждый второй вызов обработчика, поскольку первое срабатывание это отправка формы в результате действий пользователя, которое обрабатывать нужно, а второе — отображение результата которое обрабатывать не нужно. Для простоты будем в начале обработчика OnBeforeNavigate2 переключать bool переменную.
И вот результат:
Это все что необходимо для минимального приложения. Но работать таким образом будет не все — за рамками осталось например получение данных о файлах для input type=«file», а также работа с XMLHttpRequest для корректной работы скриптов со всякими там ajax.
HTML Editor in a Windows Forms Application [closed]
Want to improve this question? Update the question so it’s on-topic for Stack Overflow.
Closed 1 year ago .
We are looking for a WYSIWYG editor control for our windows application (vb.net or c#) so that users can design HTML emails (to send using the SMTP objects in the dot net framework) before sending.
Currently all the available editors we can find have one of the following issues:
They rely on mshtml.dll or the web browser control which as proven for us to be unreliable as the HTML code and the editor get out of sync under windows 2000 (IE6)
They are web-based, not a windows form control
They place styles in the head of the document (see note below)
Unfortunately, as this HTML email article descries the only sure way of making HTML emails to work with styles is to use them inline which now seems to be unsupported in many editors.
Does anyone have any experience in this or could suggest a solution?
6 Answers 6
I’ve been using this one, which goes a little lower than the WebBrowser, but still uses MSHTML, which does spit out some ugly HTML. For my purposes, I am doing a multi-tabbed editor with WYSIWYG and HTML edit mode (using ICSharp.TextEditor) with a Buffer class to update whenever tabs change. As part of that Buffer class, I actually run the HTML through HTML Tidy and a few scrub-n-replace bits to get valid XHTML.
I only offer that as a solution because I, too, failed to find one that wasn’t derived from MSHTML in some way and eventually just went ahead with the above solution to keep moving forward.
There is this HTML Edit Control for .NET (disclosure: I wrote it).
It doesn’t rely on any web browser; it’s a Windows form control; and, it can cope with the style= attribute.
It’s not exactly what you want: because it’s designed for WYSIWYM, the toolbar doesn’t have buttons to edit inline styles (although its rendering engine will render inline styles), the toolbar lets you specify only block-level elements like