DOBON.NET DOBON.NETプログラミング掲示板過去ログ

focus取得時の反転表示について

環境/言語:[Win 2000 Pro]
分類:[.NET]

おはようございます こうと申します

今回はfocus取得時にテキストボックスの内容を反転表示
させることについてききたいのですが(基本的な質問でも
うしわけないです。)

まずVB6.0ではGotFocusでフォーカスを取得できたのですが
.NETではできませんでした。 そこでいろいろとネットでし
らべてみると、Enterイベントを使えばいいとあったので使用
したのですが今ひとつ状況がかわりません。

今実現したいこととしましては

TextBox1に数字をいれEnterキーを押下した時TextBox1に
focusし、TextBox1の内容を反転表示させたいのですが

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As           System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Return Then
TextBox1.Focus()
End If
End Sub

ここで

Private Sub TextBox1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Enter
Call selCtrl(TextBox1) 'テキストボックスの内容を反転させる処理
End Sub

あるいはGotFocusにしてもできません。
何卒ご教授のほどよろしくお願いします。

こう
おはようございます、じゃんぬねっと です。

■No9740に返信(こうさんの記事)
> 今回はfocus取得時にテキストボックスの内容を反転表示させることについてききたいのです

私のサイトに、タイトルそのものの答えがあります。
http://jeanne.wankuma.com/tips/textbox/06-onselectall.html

> Call selCtrl(TextBox1) 'テキストボックスの内容を反転させる処理

SelectAll() メソッドを使えばよろしいかと思います。
http://jeanne.wankuma.com/tips/textbox/05-selectall.html

> あるいはGotFocusにしてもできません。

低水準イベントである、GotFocus はこのような場合の使用は推奨されません。
じゃんぬねっとさんさっそくのお返事ありがとうございます
教えてもらったとおりにやったところ

TextBox1以外のコントロールからTextBox1へフォーカスを
もっていったところうまくいくのですが

TextBox1自身にフォーカスを持っている時に
  TextBox1.Focus
とやってもTextBox1のEnterイベントが発生
していないようです。
これはどのようにすれば回避できるのでしょうか?
何卒よろしくお願いします。
こんにちは、じゃんぬねっと です。

■No9742に返信(こうさんの記事)
> TextBox1自身にフォーカスを持っている時に
>   TextBox1.Focus
> とやってもTextBox1のEnterイベントが発生していないようです。

それは、自分自身にフォーカスがあるのに、
フォーカスを取得する系のイベントが発生しちゃまずいでしょう。

> これはどのようにすれば回避できるのでしょうか?

別に、イベントに頼る必要はないと思うんですよね。
イベントは "内部で起きる" もので、"外部から起こす" ものではありませんから。

[C#]
    private void textBox1_KeyDown(object sender, KeyEventArgs e) {
        if (e.KeyCode == Keys.Enter) {
            textBox1.SelectAll();
        }
    }

[VB.NET]
    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles TextBox1.KeyDown
        If e.KeyCode = Keys.Enter Then
            TextBox1.SelectAll()
        End If
    End Sub
じゃんぬねっとさんありがとうございます。

> 別に、イベントに頼る必要はないと思うんですよね。
> イベントは "内部で起きる" もので、"外部から起こす" ものではありませんから。

確かにその通りですね。 いわれてみたらまさにその通りって
感じです。もう少し頭をやわらかく考えないといけないと思いました。

いつもありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板