title: DataGridView CellPainting drawing text with ampersand displays weirdly
body: <p>I have implemented a CellPainting event handler that uses TextRenderer.DrawText and it has worked great up until a cell had an ampersand in it. The cell shows the ampersand correctly while editing the cell, but when editing is done and it is drawn, it shows up as a small line (not an underscore).</p>
  
  <p><img src="https://i.imgur.com/Monz3Hp.png" alt="Editing cell">
  <img src="https://i.imgur.com/5oMWTm6.png" alt="Not Editing cell"></p>
  
  <pre><code>using System;
  using System.Drawing;
  using System.Windows.Forms;
  
  namespace StackOverFlowFormExample {
      public partial class DataGridViewImplementation : DataGridView {
          public DataGridViewImplementation() {
              InitializeComponent();
              this.ColumnCount = 1;
              this.CellPainting += DGV_CellPainting;
          }
  
          private void DGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) {         
              if (!e.Handled &amp;&amp; e.RowIndex &gt; -1 &amp;&amp; e.Value != null) {
                  e.PaintBackground(e.CellBounds, false);
                  TextRenderer.DrawText(e.Graphics, e.Value.ToString(), 
                                        e.CellStyle.Font, e.CellBounds,
                                        e.CellStyle.ForeColor, TextFormatFlags.VerticalCenter);
                  e.Handled = true;
              }
          }
      }
  }
  
  //creating the datagridview
  public partial class MainForm : Form {
      public MainForm() {
          InitializeComponent();  
          DataGridViewImplementation dgvi = new DataGridViewImplementation();
          this.Controls.Add(dgvi);
          dgvi.Rows.Add("this is a &amp; value");
      }
  }
  </code></pre>
  
  <p>replacing</p>
  
  <pre><code>TextRenderer.DrawText(e.Graphics, e.Value.ToString(), 
                        e.CellStyle.Font, e.CellBounds, 
                        e.CellStyle.ForeColor, TextFormatFlags.VerticalCenter);
  </code></pre>
  
  <p>with</p>
  
  <pre><code>e.PaintContent(e.ClipBounds);
  </code></pre>
  
  <p>shows it correctly, of course I want to be able to customize the painting of the content though.
  I've also tried using</p>
  
  <pre><code>e.Graphics.DrawString(e.Value.ToString(), e.CellStyle.Font, Brushes.Black, e.CellBounds);
  </code></pre>
  
  <p><img src="https://i.imgur.com/oEJEMss.png" alt="e.PaintContent Image"></p>
  
  <p>but it doesn't draw it the same as</p>
  
  <pre><code>e.Paint(e.ClipBounds, e.PaintParts);
  </code></pre>
  
  <p>I use e.Paint in my actual code when a cell is being painted that doesn't need my customized painting.</p>
  
  <p>How can I get e.Graphics.DrawString to look the same as e.Paint or get TextRenderer.DrawText to display the ampersand correctly?</p>