テキストボックスでコピー、切り取り、貼り付け、元に戻すを行うには、それぞれテキストボックスコントロールのCopy、Cut、Paste、Undoメソッドを使います。
次の例では、テキストボックスコントロールTextBox1と、4つのボタンコントロールcopy、cut、paste、undoがあり、それぞれのボタンをクリックすることにより、TextBox1でコピー、切り取り、貼り付け、元に戻すの操作を行えるようにしています。
'コピーする Private Sub copy_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles copy.Click If TextBox1.SelectionLength > 0 Then '選択されている文字列があるときはコピーする '(SelectionLengthで調べなくても問題はない) TextBox1.Copy() End If End Sub '切り取る Private Sub cut_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cut.Click If TextBox1.SelectionLength > 0 Then '選択されている文字列があるときは切り取る '(SelectionLengthで調べなくても問題はない) TextBox1.Cut() End If End Sub '貼り付ける Private Sub paste_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles paste.Click Dim data As IDataObject = Clipboard.GetDataObject() If (Not data Is Nothing) AndAlso (data.GetDataPresent(DataFormats.Text) = True) Then 'クリップボードにテキストデータがあるときは貼り付ける '(テキストデータの有無を調べなくても問題はない) TextBox1.Paste() End If End Sub '元に戻す Private Sub undo_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles undo.Click 'アンドゥができるか調べる If TextBox1.CanUndo Then 'アンドゥする TextBox1.Undo() 'アンドゥバッファを削除する TextBox1.ClearUndo() End If End Sub
//コピーする private void copy_Click(object sender, System.EventArgs e) { if (TextBox1.SelectionLength > 0) { //選択されている文字列があるときはコピーする //(SelectionLengthで調べなくても問題はない) TextBox1.Copy(); } } //切り取る private void cut_Click(object sender, System.EventArgs e) { if (TextBox1.SelectionLength > 0) { //選択されている文字列があるときは切り取る //(SelectionLengthで調べなくても問題はない) TextBox1.Cut(); } } //貼り付ける private void paste_Click(object sender, System.EventArgs e) { IDataObject data = Clipboard.GetDataObject(); if (data != null && data.GetDataPresent(DataFormats.Text) == true) { //クリップボードにテキストデータがあるときは貼り付ける //(テキストデータの有無を調べなくても問題はない) TextBox1.Paste(); } } //元に戻す private void undo_Click(object sender, System.EventArgs e) { //アンドゥができるか調べる if (TextBox1.CanUndo) { //アンドゥする TextBox1.Undo(); //アンドゥバッファを削除する TextBox1.ClearUndo(); } }
ちなみにリッチテキストボックスコントロールではRichTextBox.Redoメソッドにより、やり直し(最後に元に戻された操作を再適用)することが出来ます。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。