TextBoxコントロールにCopy/Cut/Paste/Undoを実装する。
元々TextBoxコントロールにはCopy/Cut/Paste/Undoは実装されてるので、ショートカットやコンテキストメニューで使う分には特に何もやらなくてもOK。
でもメニューの項目として実装する場合は次のようにやります。
始めに操作の対象になるアクティブなコントロールを取得し、そのコントロールにCopy/Cut/Paste/Undoの処理を行います。
Copyの処理は以下のような感じになります。
// アクティブなコントロールの取得
// フォーム上で現在アクティブなコントロールを取得
Control ctrl = this.ActiveControl; // TextBoxかどうか判定
if (ctrl is TextBox)
{
// クリップボードへコピー
((TextBox)ctrl).Copy();
}
さて、TextBoxはともかく、NumericUpDownコントロールなどCopy/Cut/Paste/Undoメソッドが無いものはどうするか?
この場合は対象のコントロールがTextBoxを含んでいるものであればコントロール内を検索してTextBoxを探し出してから同様の処理を行えばOK。
// アクティブなコントロールの取得
// フォーム上で現在アクティブなコントロールを取得
Control ctrl = this.ActiveControl; if (ctrl is NumericUpDown)
{
foreach (Control c in ((NumericUpDown)ctrl).Controls)
{
if (c is TextBox)
{
// クリップボードへコピー
((TextBox)c).Copy();
break;
}
}
}