none
複数のテキストボックスでctrl+C,ctrl+V,ctrl+Xを使いたい時 RRS feed

  • 質問

  • フォーム上に10ほどテキストボックスがありそれぞれコピー、ペースト、カットを実装したいとき以下のように書く以外に方法はあるのでしょうか?

    例として3つだけ書きます。

    諸先輩方宜しくお願いしますm(_ _)m

     

    ここからコード

     Private Sub txtAGet_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtAGet.KeyUp

            Select Case e.KeyCode

                Case Keys.C AndAlso e.Control

                    DirectCast(sender, TextBox).Copy()

                Case Keys.V AndAlso e.Control

                    DirectCast(sender, TextBox).Paste()

                Case Keys.X AndAlso e.Control

                    DirectCast(sender, TextBox).Cut()

            End Select

        End Sub   

    '----------------------

     

     Private Sub txtBGet_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtBGet.KeyUp

            Select Case e.KeyCode

                Case Keys.C AndAlso e.Control

                    DirectCast(sender, TextBox).Copy()

                Case Keys.V AndAlso e.Control

                    DirectCast(sender, TextBox).Paste()

                Case Keys.X AndAlso e.Control

                    DirectCast(sender, TextBox).Cut()

            End Select

        End Sub

     

    '----------------------

     

        Private Sub txtCGet_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtCGet.KeyUp

            Select Case e.KeyCode

                Case Keys.C AndAlso e.Control

                    DirectCast(sender, TextBox).Copy()

                Case Keys.V AndAlso e.Control

                    DirectCast(sender, TextBox).Paste()

                Case Keys.X AndAlso e.Control

                    DirectCast(sender, TextBox).Cut()

            End Select

        End Sub

    2011年10月27日 11:22

回答

  • そのようなコードを書かなくてもコピー、カット、ペーストは行えるはずです。
    特別な事情があるのでしょうか。
    • 回答としてマーク AIUEO999 2011年10月27日 14:54
    2011年10月27日 11:33
  • あれ?できませんでしたっけ?
    手元の Win7(x64)  + .NET 3.5.1 環境では単なる TextBox を配置して Ctrl+A で全選択できました。
    テキストボックスの中に何も入っていない状態であるとか、実はそのキーを別の場所で横取りしているとかありませんか?
    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク AIUEO999 2011年10月27日 14:54
    2011年10月27日 13:35
    モデレータ
  • 外池と申します。Ctrl + C、V、X、Aの操作をするためにプログラムを書き下す必要があるかどうかは別にして・・・、

    複数のTextBoxのいずれかひとつでイベント「SomeEvent」が起きたときの処理を、一気に書く方法を、一般論で書いておきます。

    Sub TextBox_SomeEvent(ByVal sender As Object, ByVal e As SomeEventArgs) Handles TextBox1.SomeEvent, TextBox2.SomeEvent, .... , TextBoxN.SomeEvent

         DirectCast(sender, TextBox).何か操作

    End Sub

    こんな感じで、Handlesの後に、複数のTextBoxの名前をぞろぞろ書き下せばOKです。

    っていうか・・・、これ、ご存知ですよね?
    senderをDirectCastすることをご存知なんだから・・・。


    (ホームページを再開しました)
    • 回答としてマーク AIUEO999 2011年10月27日 14:54
    2011年10月27日 13:43

すべての返信

  • そのようなコードを書かなくてもコピー、カット、ペーストは行えるはずです。
    特別な事情があるのでしょうか。
    • 回答としてマーク AIUEO999 2011年10月27日 14:54
    2011年10月27日 11:33

  • NF64様
    スミマセン。私の勘違いでした。コピー、ペースト、カットはなにもしなくてもできるようですが、全て選択ctrl+Aはできないかと思いますが、合っていますか?
        Private Sub txtAGet_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtDGet.KeyDown
            If e.KeyCode = Keys.A AndAlso e.Control Then

                DirectCast(sender, TextBox).SelectAll()
            End If

        End Sub
    txtAGet_KeyDown
    txtBGet_KeyDown
    txtCGet_KeyDown
    にそれぞれ書かなくても良い方法はありますでしょうか?
    宜しくお願いします。
    2011年10月27日 12:55
  • あれ?できませんでしたっけ?
    手元の Win7(x64)  + .NET 3.5.1 環境では単なる TextBox を配置して Ctrl+A で全選択できました。
    テキストボックスの中に何も入っていない状態であるとか、実はそのキーを別の場所で横取りしているとかありませんか?
    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク AIUEO999 2011年10月27日 14:54
    2011年10月27日 13:35
    モデレータ
  • 外池と申します。Ctrl + C、V、X、Aの操作をするためにプログラムを書き下す必要があるかどうかは別にして・・・、

    複数のTextBoxのいずれかひとつでイベント「SomeEvent」が起きたときの処理を、一気に書く方法を、一般論で書いておきます。

    Sub TextBox_SomeEvent(ByVal sender As Object, ByVal e As SomeEventArgs) Handles TextBox1.SomeEvent, TextBox2.SomeEvent, .... , TextBoxN.SomeEvent

         DirectCast(sender, TextBox).何か操作

    End Sub

    こんな感じで、Handlesの後に、複数のTextBoxの名前をぞろぞろ書き下せばOKです。

    っていうか・・・、これ、ご存知ですよね?
    senderをDirectCastすることをご存知なんだから・・・。


    (ホームページを再開しました)
    • 回答としてマーク AIUEO999 2011年10月27日 14:54
    2011年10月27日 13:43
  • 返信ありがとうございます!!

     

    なぜでしょう。実は勘違いと上で書きましたが、できなかったもので苦肉の策で最初のコードを書き、出来るはずと言われてコードを取ってみると全選択ができない、という状態でした。

    なにか他の原因かも知れませんね。

    確認もせずに質問してしまってスミマセンでしたm(_ _)m

     

    もう少し自分でやってみて再度わからないところを質問させていただきます。ありがとうございます!!

    • 回答としてマーク AIUEO999 2011年10月27日 14:54
    • 回答としてマークされていない AIUEO999 2011年10月27日 14:54
    2011年10月27日 13:50
  • ご返答ありがとうございます!!

     

    >っていうか・・・、これ、ご存知ですよね?

    >senderをDirectCastすることをご存知なんだから・・・。

     

    私が貼り付けたコードもどこかからの拝借だったので、きちんと理解はしておりませんでした(^_^;)

     

    ありがとうございます。頂いたコードを参考にがんばってみます。

    まだまだわからないことばかりで先輩方にご迷惑お掛けします。今後とも宜しくお願いします。


    • 編集済み AIUEO999 2011年10月27日 13:53
    • 回答としてマーク AIUEO999 2011年10月27日 14:54
    • 回答としてマークされていない AIUEO999 2011年10月27日 14:54
    2011年10月27日 13:52