title: Capture CTRL+V or paste in a textbox in .NET
body: <p>VB.NET 2010 - I have a RichTextbox in which the user can manually enter data or copy/paste from another source. After the data is complete he hits go and a few key words are highlighted. My issue is that if he copy/pastes from another source the formatting also gets copied. Well sometimes the outside source has a white font and my textbox has a white background so it appears like he pasted nothing and he does it again and again.</p>
  
  <p>What I'm looking for is a way to intercept the paste action into the textbox so that I can take that text and paste it as pure ASCII without formatting.</p>
  
  <p>Edit after experimenting with KeyDown</p>
  
  <pre><code>Private Sub txtRch_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtRch.KeyDown
      If e.Modifiers = Keys.Control AndAlso e.KeyCode = Keys.V Then
          With txtRch
              Dim i As Integer = .SelectionStart          'cache the current position
              .Select(0, i)                               'select text from start to current position
              Dim s As String = .SelectedText             'copy that text to a variable
              .Select(i, .TextLength)                     'now select text from current position to end
              Dim t As String = .SelectedText             'copy that text to a variable
              Dim u As String = s &amp; Clipboard.GetText(TextDataFormat.UnicodeText) &amp; t 'now concatenate the first chunk, the new text, and the last chunk
              .Clear()                                    'clear the textbox
              .Text = u                                   'paste the new text back into textbox
              .SelectionStart = i                         'put cursor back to cached position
          End With
  
          'the event has been handled manually
          e.Handled = True
      End If
  End Sub
  </code></pre>
  
  <p>This seems to work and all my text gets retained and its all ASCII. I think if I wanted to take a step further I could also take the font and forecolor of my RichTextbox, select all text, and then assign the font and forecolor to the selection.</p>