.NET WinForms HTML Editor Control

A drop-in HTML editor for WinForms apps - one NuGet install, clean XHTML, Word paste that survives, source code if you need it. In production since 2007, ready for .NET 10.

Clone from GitHub

The same samples, nothing to unblock

Download samples

The same samples, zipped

Book a live demo

Free, 1:1 with a domain expert

The download and the GitHub repository hold exactly the same samples. Take the zip if you are behind a firewall that blocks GitHub, otherwise clone it: a clone carries no mark of the web, so there is nothing to unblock before Visual Studio will build it.

Install via NuGet
$ dotnet add package SpiceLogic.HtmlEditor.WinForms PM> Install-Package SpiceLogic.HtmlEditor.WinForms
Works with
.NET Framework: 4.5, 4.7.2, 4.8 .NET: 5, 6, 7, 8, 9, 10 Visual Studio: 2019, 2022, 2026
4.7Kdownloads on NuGet Since 2007in production Official MCP serveryour assistant writes the real API 14-day trialno licence key to evaluate Perpetual licensepay once · no subscription

An editor your users never have to think about.

It pastes cleanly from Word, produces clean XHTML, and behaves like it belongs in your app.

Quick start

Add a full HTML editor to your WinForms app in minutes.

One paste. Your assistant connects itself to our documentation server, installs the package, and writes the integration against the real API.

Official MCP server

Your assistant reads this control's real signatures and real documentation pages instead of guessing from stale training data, so the first integration it writes actually compiles.

Paste this into Claude Code, Cursor, or Copilot in agent mode
First connect yourself to the SpiceLogic documentation server so you work from the real API instead of memory. In Visual Studio with GitHub Copilot, create .mcp.json beside the solution with a servers entry named spicelogic-winforms-editor whose url is https://mcp.spicelogic.com/html-editor/winforms, then use Agent mode and enable the SpiceLogic tools. In VS Code or Cursor, create .vscode/mcp.json with an http server named spicelogic-winforms-editor pointing at https://mcp.spicelogic.com/html-editor/winforms and start it. In Claude Code run: claude mcp add --transport http spicelogic-winforms-editor https://mcp.spicelogic.com/html-editor/winforms . Then check that the SpiceLogic tools actually respond. If they do not, tell me to restart the session and stop there rather than writing code from memory.

Once the tools respond, add a WYSIWYG HTML editor to my WinForms app: install the SpiceLogic.HtmlEditor.WinForms NuGet package, place the editor on the main form so it fills the window, seed it with a sample document, wire a Save button that writes the editor's HTML to a file, then build and run it.

The connection is a one-time step and the assistant does it itself. To wire it up by hand instead, see setup for Claude Code, Cursor, Copilot and Claude Desktop.

Or write it yourself: drop the control onto your form, set a property, subscribe to one event.

C#
using SpiceLogic.HtmlEditor.WinForms;

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
        winFormHtmlEditor1.BodyHtml = "<p>Hello <strong>World</strong>!</p>";
        winFormHtmlEditor1.HtmlChanged += (s, e) => Console.WriteLine("HTML changed!");
    }
}

Or start from something that already runs: clone, build, done.

Terminal
git clone https://github.com/spicelogic/winforms-html-editor-control-samples.git
dotnet run --project winforms-html-editor-control-samples/01-Quickstart-CS

Eleven samples, each one in C# and VB.NET, on GitHub. They reference the published package, so a clone restores it and builds with no key to enter and nothing to unblock. MIT licensed, so you can lift any of it straight into your own application.

The work · 18 capabilities

18 capabilities. Three are shown in full; the rest open in place.

01

Ship a Full HTML Editor Without Building One

Drop the control onto a form and your app gains a complete HTML composition surface: toolbar, WYSIWYG editing, formatted source view, spell checking, tables, images, and dialogs - the plumbing a team otherwise spends weeks building before the first real feature ships.

SpiceLogic has shipped this control since 2007, and the current line is rebuilt for modern .NET - so a maintained WinForms application gets professional HTML editing without turning the editor into a side project.

WinForms form showing the SpiceLogic HTML editor with toolbar, document surface, and source or preview tabs
02

Official MCP Server for AI Coding Assistants

SpiceLogic runs an official Model Context Protocol (MCP) server for this control, and it is not tied to one vendor's assistant. Point whichever tool your team already works in at it and it reads the real method signatures, the real documentation pages, and snippets that compile today, instead of inventing an API from stale training data. It is a remote endpoint over HTTPS, so there is nothing to install on a developer machine and no key to manage.

GitHub Copilot in Visual Studio. In Visual Studio 2026 or Visual Studio 2022 (17.14 or later), save a .mcp.json file beside your solution containing { "servers": { "spicelogic-winforms-editor": { "url": "https://mcp.spicelogic.com/html-editor/winforms" } } }, then switch Copilot Chat to Agent mode and enable the SpiceLogic tools. Commit that file and every developer on the team is connected on their next pull.

GitHub Copilot in VS Code. The same JSON goes in .vscode/mcp.json, with "type": "http" added beside the URL.

Claude Code, OpenAI Codex, Cursor, Claude Desktop. Run claude mcp add --transport http spicelogic-winforms-editor https://mcp.spicelogic.com/html-editor/winforms or codex mcp add spicelogic-winforms-editor --url https://mcp.spicelogic.com/html-editor/winforms; Cursor and Claude Desktop take the same URL.

Read the walkthrough
One prompt pasted into Claude Code beside the live response from the SpiceLogic MCP server, listing the real WinFormHtmlEditor signatures the assistant writes against
03

Paste From Word and Outlook Without the Mess

Your users will paste from Word and Outlook - the only question is what your database receives. The editor detects Office clipboard content and cleans it automatically: no MsoNormal noise in saved templates, email bodies, or support replies, and no special button for users to remember.

Need stricter rules? The Pasting event is a checkpoint where your own policy runs before anything enters the document.

Real Microsoft Word document behind and the WinForms HTML editor in front showing the same content pasted cleanly
The complete index
04 Clean HTML Your Database and Email Can Trust One screen saves a fragment into a SQL column; another sends a complete document by email.

One screen saves a fragment into a SQL column; another sends a complete document by email. BodyHtml returns the inner body markup, DocumentHtml the full document with head and doctype - both clean, both ready to store or send, no DOM scraping.

HTML5 output is the default, with overrides available for older render targets.

BodyHtml and DocumentHtml panes shown beneath the editor, both carrying the editor's own clean output
05 Binds to Your Data Source Like Any Other Control Your form code should not care that HTML is involved.

Your form code should not care that HTML is involved. BodyHtml and DocumentHtml are [Bindable(true)] properties, so they bind through DataBindings.Add to a BindingSource, an Entity Framework entity, or a plain object exactly the way a TextBox does - the record loads into the editor, and edits flow back to your object.

The HtmlChanged event fires as the user edits, so you can push the value back with Binding.WriteValue() and keep dirty flags, save prompts and live previews accurate without polling. C# and VB.NET data-binding samples ship with the trial.

C# code binding the editor BodyHtml property to a data source beside the running form showing the bound record
06 Let Users Build Their Own Mail-Merge Templates Templates need fields, not fragile hand-typed tokens.

Templates need fields, not fragile hand-typed tokens. The mail-merge API lets your application define placeholders - customer name, invoice number, renewal date - that users insert at the caret and your code resolves at send time. It turns the editor into a template builder for CRM messages, invoices, and notification emails.

Mail-merge field picker above a template where four placeholder tokens sit inline in the text
07 Take Control of Every Paste Users paste from browsers, spreadsheets, screenshots, and internal tools - and without a policy, saved HTML slowly becomes a support…

Users paste from browsers, spreadsheets, screenshots, and internal tools - and without a policy, saved HTML slowly becomes a support problem. The Pasting event lets your application clean markup, strip tags, reject oversized content, and rewrite links before the paste lands. Your data-quality rules run first, every time.

Code handling the Pasting event before clipboard HTML is inserted into the editor
08 Spell Check Without Deployment Drama Fourteen Hunspell dictionaries are embedded in the control - English (US and GB), German, French, Spanish, Italian, Dutch, Danish, Swedish…

Fourteen Hunspell dictionaries are embedded in the control - English (US and GB), German, French, Spanish, Italian, Dutch, Danish, Swedish, Norwegian, Polish, Czech, and Portuguese (Brazil and Portugal) - so there are no dictionary files to ship. Inline red squiggles, dialog checking, and a per-user custom dictionary work out of the box; any OpenOffice dictionary or your own engine plugs in through ISpellCheckerEngine.

Misspelled word underlined with a red squiggle and spelling suggestions in the WinForms HTML editor
09 Tables Users Can Edit Without Calling Support Most simple editors lose track of a table the moment it exists - users end up deleting and starting over.

Most simple editors lose track of a table the moment it exists - users end up deleting and starting over. The two-way table dialog reads the existing structure and styling back from the document, so rows, columns, borders, and merged cells stay editable forever. TableAuthoringService exposes the same operations to your own code.

Table dialog populated from an existing HTML table inside the WinForms editor
10 Images That Arrive Clean and Never Break the Layout Screenshots in tickets, logos in signatures, product shots in templates - images arrive from files, URLs, and the clipboard.

Screenshots in tickets, logos in signatures, product shots in templates - images arrive from files, URLs, and the clipboard. Oversized pastes are resized automatically with MaxPastedImageWidth, and EmbedLocalImagesAsBase64() turns local references into portable, self-contained HTML when output leaves the machine.

Image Properties dialog in the WinForms HTML editor with source, tooltip, alt text, border, and size fields populated
11 Drive the Whole Editor from Your Own Code Everything the toolbar does, your code can do.

Everything the toolbar does, your code can do. Focused services keep the API discoverable:

  • Content - read, set, transform, and export HTML
  • Formatting and Selection - apply styles and inspect what the user selected
  • StateQuery - drive your own UI state: bold, undoable, inside a table
  • HtmlChanged - dirty flags, save prompts, live previews
  • GetEmailMessageWithLocalImagesEmbedded() - a mail-ready message in one call
C# code using Content, Formatting, Selection, StateQuery, and HtmlChanged services from the editor API
12 The Editor Never Fights Your App's Shortcuts In a real application Ctrl+S, Ctrl+F, and Ctrl+P already mean something.

In a real application Ctrl+S, Ctrl+F, and Ctrl+P already mean something. KeyBindingsManager binds, remaps, or disables any editor action by EditorActionId, so familiar editing shortcuts stay where users expect them - and your application's global commands win whenever they should.

Code showing KeyBindingsManager remapping editor shortcuts in a WinForms application
13 Make the Toolbar Belong to Your App Use the built-in toolbar as shipped, hide commands a role should not see, or add your own buttons beside the standard ones.

Use the built-in toolbar as shipped, hide commands a role should not see, or add your own buttons beside the standard ones. ToolbarItemOverrider intercepts built-in actions and StateQuery keeps custom UI in sync, so the editor follows your product's rules instead of imposing its own.

A custom Insert signature button added to the WinForms editor toolbar, shown magnified beside the built-in commands
Read the walkthrough
14 Every Dialog Can Carry Your Brand The image, hyperlink, table, search, symbol, video, and spell-check dialogs all ship with source code and replacement interfaces -…

The image, hyperlink, table, search, symbol, video, and spell-check dialogs all ship with source code and replacement interfaces - IImageDialog, ITableDialog, and the rest. Restyle them, wire them to your asset library, or swap in your own forms; right-click menus are yours too via EditorContextMenuStrip.

A fully branded asset-picker dialog replacing the built-in image dialog through IImageDialog
Read the walkthrough
15 Feels Native in Your Customers' Language Toolbar, tooltips, dialogs, and context menus ship localized in German, French, Spanish, Italian, Dutch, Portuguese, Polish, Czech…

Toolbar, tooltips, dialogs, and context menus ship localized in German, French, Spanish, Italian, Dutch, Portuguese, Polish, Czech, Swedish, Danish, and Norwegian - one Language property switches everything. Spell-check language is configured separately, because the application shell and the authored content do not always match.

A German tooltip on the editor toolbar shown magnified, proving the control's own interface is translated
16 Rich Styling Without Teaching Anyone CSS The visual style builder gives users dialog-driven control over fonts, colors, borders, backgrounds, and spacing - more power than plain…

The visual style builder gives users dialog-driven control over fonts, colors, borders, backgrounds, and spacing - more power than plain rich text, with no raw markup in sight. Your own styling pages can sit beside the built-in ones through IEditorStylePage.

Visual style builder dialog for fonts, colors, borders, background, and spacing in the editor
17 Compose Visually, Inspect the Real HTML Writers stay in WYSIWYG; developers and power users switch to a formatted, indented source view or a read-only preview of the same document.

Writers stay in WYSIWYG; developers and power users switch to a formatted, indented source view or a read-only preview of the same document. What you save is markup you can actually read - which matters once content lives in templates, tickets, and mail pipelines.

Two hosted views of the same document - formatted HTML source behind and the WYSIWYG editor in front
18 Need it for WPF? Building on WPF instead?

Building on WPF instead? A separate WPF HTML Editor Control exists with its own landing page, documentation, and licensing. Pick the control that matches your UI stack, then test the trial in the application you actually ship.

Try all 18 capabilities in the free trial.

Compatibility

Supported environments.

.NET Framework

4.5, 4.7.2, 4.8

.NET

5, 6, 7, 8, 9, 10

Visual Studio

2019, 2022, 2026

Terms that have become rare.

01

Your users' data never leaves their machine.

The control runs entirely inside your application. Nothing it edits ever touches our servers - there is no cloud dependency to disclose in your compliance review.

02

You buy it once. It is yours.

A true perpetual license, sold this way since 2007. No subscription meter running while you finish the work.

03

One-to-one support from a human domain expert.

Not a chatbot, not a call center. Support is a live conversation with the engineers who build the software. One call away, on Zoom or Teams, free.

From developers who shipped with it.

We were looking for an HTML editor control to replace a very buggy control purchased from another well know company. This control had none of the issues we encountered with that Control. Also to our surprise, many of our wish list features and workarounds we did with that Control, did exist in the SpiceLogic control. Excellent Product and Superb Support. Thumbs up.
Mahmoud Moukalled Mahmoud Moukalled Senior Staff Software Engineer, Nikon Precision Inc. Verified via LinkedIn

Integrating this week? Talk to the engineers who build it.

Every trial and every license includes free live 1:1 sessions on Zoom or Teams. You will talk to a real human, a domain expert who builds this software, and we will help you wire it into your app. No chatbot, no call center, no ticket queue.

Weigh it yourself. The evaluation build is the full control, in your solution, today.

Download samples

The same samples, zipped

Book a live demo

Free, 1:1 with our engineers