Операции вырезания, копирования, вставки и отмены в TextBox Windows Forms

Как реализовать стандартные операции вырезания, копирования, вставки и отмены для TextBox контрола в библиотеке классов Windows Forms в dot Net framework? Продемонстрирую применение производного класса от TextBox на C#. Он предоставляет процедуры обработки события Click для объектов MenuItem, которые выполняют операции вырезки, копирования, вставки и отмены. В этом примере предполагается наличие элемента управления TextBox с именем textBox1.
Копирование:

private void Menu_Copy(System.Object sender, System.EventArgs e) {
    // Ensure that text is selected in the text box.   
    if (textBox1.SelectionLength > 0)
        // Copy the selected text to the Clipboard.
        textBox1.Copy();
}

Вырезание:

private void Menu_Cut(System.Object sender, System.EventArgs e) {   
     // Ensure that text is currently selected in the text box.   
     if (textBox1.SelectedText.Length > 0)
        // Cut the selected text in the control and paste it into the Clipboard.
        textBox1.Cut();
}

Вставка:

private void Menu_Paste(System.Object sender, System.EventArgs e) {
    // Determine if there is any text in the Clipboard to paste into the text box.
    if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text)) {
        // Determine if any text is selected in the text box.
        if (textBox1.SelectionLength > 0) {
          // Ask user if they want to paste over currently selected text.
          if (MessageBox.Show("Do you want to paste over current selection?", "Cut Example", MessageBoxButtons.YesNo) == DialogResult.No)
             // Move selection to the point after the current selection and paste.
             textBox1.SelectionStart = textBox1.SelectionStart + textBox1.SelectionLength;
        }
        // Paste current text in Clipboard into text box.
        textBox1.Paste();
    }
}

Отмена:

private void Menu_Undo(System.Object sender, System.EventArgs e) {
    // Determine if last operation can be undone in text box.   
    if (textBox1.CanUndo == true) {
       // Undo the last operation.
       textBox1.Undo();
       // Clear the undo buffer to prevent last action from being redone.
       textBox1.ClearUndo();
    }
}

Примерно так реализуются операции вырезания, копирования, вставки и отмены в TextBox контроле в библиотеке классов Windows Forms dot Net.