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



コメント

このブログの人気の投稿

TabError: inconsistent use of tabs and spaces in indentation

マクロを含んだ.XLSがExcel2010で開けない

using ディレクティブまたはアセンブリ参照が不足しています。