title: Office word editor control for WinForms Applications
body: <p>I know that this question may be very old and classic but, I am trying to find a free and good word editor control to be embedded into my application for educational purpose, so I googled and tried a lot of editors and methods like using <code>RichTextBox</code> control and fill the RTF value with my word document data and it was displayed into the <code>RichTextBox</code> but without any editing capabilities that exist in the real Word application.</p>
  <p>I just need some of the editing capabilities that are exist in the word not all of them, so I decided to build my own word editor but actually I can't find a good way to start that and I don't have that experience, Any Ideas?</p>
  <p>What I did until now is very basic and I need to know for example how to add a new method to attach word document to my editor so I need to do something like</p>
  <pre><code>wordEditor1.Word = {Path of word document}
  </code></pre>
  <p>and this step should show the document inside my editor with all styles and formats just like opening any word document inside word application.</p>
  <p>Also I need to add capability of applying paragraph style or character style on the selected paragraph, so I think that I need to add methods for characters or paragraphs like</p>
  <pre><code>selectedParagraph.Style = {name of style in word or name of selected style form styles pane}
  </code></pre>
  <p>Finally I need to allow user to run macros on the opened document and I know that this may be the hardest step, so I just need some ideas to redirect me to the best way of how to do that.</p>
  <p>What I did till now is something like</p>
  <pre><code>using System.Windows.Forms;
  
  namespace AutoStyle
  {
      public partial class WordEditor : RichTextBox
      {
          public WordEditor()
          {
              InitializeComponent();
          }
          public object Word
          {
              get;
              set;
          }
          protected override void OnPaint(PaintEventArgs pe)
          {
              base.OnPaint(pe);
          }
      }
  }
  </code></pre>
  <p>I believe that this question may help others like me who is newbie and has a lack of experience, so I appreciate you comments and efforts.</p>