TextBoxコントロールにUndo

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;
                    }
                }
            }


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です