title: Size RichTextBox according to contents
body: <p>This code automatically sizes a RichTextBox according to it's contents.  I'm having issues, especially with tables.  <code>\t</code> may be ignored.  I tried a managed solution, now I'm trying platform invoke.   Current Output:</p>
  
  <p><img src="https://i.stack.imgur.com/bwszt.png" alt="enter image description here"></p>
  
  <pre><code>    [DllImport("gdi32.dll")]
      static extern bool GetTextExtentPoint32(IntPtr hdc, string lpString, int cbString, out SIZE lpSize);
  
      [DllImport("user32.dll", SetLastError = true)]
      static extern IntPtr GetDC(IntPtr hWnd);
  
      [StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]
      public struct SIZE
      {
          public int cx;
          public int cy;
  
          public SIZE(int cx, int cy)
          {
              this.cx = cx;
              this.cy = cy;
          }
      }
  
      public static void Main()
      {
          Form form = new Form();
          RichTextBox rtfBox = new RichTextBox();
  
          rtfBox.Rtf = @"{\rtf1\ansi\deff0{\fonttbl{\f0\fnil Arial;}}\viewkind4\uc1\trowd\trgaph100\cellx1000\cellx2000\pard\intbl\lang1033\f0\fs20  hi\cell  bye\cell\row\intbl  one\cell  two\cell\row\pard\par}";
          rtfBox.ScrollBars = RichTextBoxScrollBars.None;
  
          string sInput = "hi\t bye\t\n";// one\t two\t\n";
          SIZE CharSize;
  
          form.Controls.Add(rtfBox);
  
          IntPtr hdc = GetDC(IntPtr.Zero);//Context for entire screen
          GetTextExtentPoint32(hdc, sInput, sInput.Length, out CharSize);
  
          rtfBox.Width = CharSize.cx;
          rtfBox.Height = CharSize.cy;
  
          form.Visible = false;
  
          form.ShowDialog();
      }
  </code></pre>
  
  <p>(Note, for simplicity this is a console application with a reference to System.Windows.Forms.dll)</p>