スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    【C#】TextBoxフォーカス取得時、TextBox内を全選択(反転表示)させたい

    久しぶりの更新になりますな。

    今回はTextBoxです。
    フォーカスを当てた時、(Tabキーもしくはマウスでクリックした時)
    内容を全選択するようにすると、コピペや下記顔氏が楽でいいですよね。
    (長い文章を書くようなTextBoxだと逆にうっかり消したりして嫌だったりしますが・・・)

    で、普通に考えたらこう書きますよね。
    protected override void OnEnter(EventArgs e)
    {
        base.OnEnter(e);
       this.SelectAll();
    }
    
    
    でも、これだと、マウスに反応してくれないのです。
    で、調べたところ、この辺のサイトに記述があり
    下記の用に書くとうまくいくようです
    protected override void OnEnter(EventArgs e)
    {
        base.OnEnter(e);
        //BeginInvokeするとマウスでクリックしたときも全選択になる
       this.BeginInvoke(new MethodInvoker(() => this.SelectAll()));
    }
    
    
    
    なんでなんでしょうね・・。
    スポンサーサイト

    テーマ : プログラミング
    ジャンル : コンピュータ

    コメントの投稿

    管理者にだけ表示を許可する

    No title

     リンク先に「マウスクリックで選択が解除される」と書いてあるじゃないですか。MouseClickイベントが呼ばれるのはEnterイベントのあとなので、

    Enterで全選択される→マウスクリックで解除される。

    ……という動作をします。結果的には全選択されない状態になります。一瞬は全選択した状態が画面に表示されるので、クリックでフォーカスが移ったときはテキストボックスがちらついて見えます。

     BeginInvokeを使用すると、Enter→クリックというメッセージキューがあるところにSelectAll用のメッセージを追加することになるので、クリックイベント実行後にSelectAllが呼び出されます。

    なるほど!

    今頃の返答ですいません・・。

    レスありがとうございます。
    なるほど、マウスクリックで選択が解除されていましたか。
    たしかにそう書いてますね。気づきませんでした・・。

    なっとくです。
    プロフィール

    ざっち

    Author:ざっち
    ざっちのーと
    ♪自由なSEのメモ帳です♪

    ざっちのスキル一覧
    ----------------
    上級(手足も同然!)
    ・.net FrameWork
    ・C#
    ・SqlServer
    ・VisualBasic6.0
    ----------------
    中級(だいたいOK!)
    ・WPF(XAML)
    ・Android
    ・WindowsMobile6.5
    ・HTML
    ----------------
    下級(や、やればできるさ!)
    ・PHP
    ・JavaScript
    ・SilverLight
    ・SQLite
    ・Python(だってjetCreaterが・・・)
    ・C++(OpenCVいじってみたくて・・・)
    ----------------
    最近のお気に入り
    ・WPF(XAML)
    ・Android
    ・GoogleAPI
    ----------------

    最近の記事
    月別アーカイブ
    カテゴリー
    夢見る羊さん
    地球の名言Ⅱ

    presented by 地球の名言

    Twitter...A

    Twitter < > Reload

    ブロとも申請フォーム

    この人とブロともになる

    ブログ内検索
    RSSフィード
    リンク
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。