- PR -

VB6であったClick時のGotFocus処理がVB.NETにない

投稿者投稿内容
yamaodasu
会議室デビュー日: 2004/08/26
投稿数: 5
投稿日時: 2004-08-26 16:27
初めましてyamaodasuといいます。よろしくお願いします。

早速ですが、VB6.0ではTextBoxをマウスでClick時、
フォーカスを取得したということで
GotFocusイベントが動いていたと思うのですが、
VB.NETではGotFocusイベント(またはEnterイベント)が
動きません。

行いたい内容としては、
TextBoxの、マウスClickによるフォーカス取得時
入力されている内容を全選択させたいのです。

現状、Tabキーによる移動でフォーカスを取得時は
Enterイベントが入るため、
このイベント内で全選択させるようにしておりますが
マウスでも何とかできるようにしたいのです。

よろしくお願いいたします。


よろしくお願いします。


カニ
ベテラン
会議室デビュー日: 2004/06/24
投稿数: 53
お住まい・勤務地: 横浜・川崎
投稿日時: 2004-08-26 16:45
これかな?
http://dobon.net/vb/dotnet/vb6/gotfocusevent.html
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2004-08-26 17:05
[環境」
Win2K Pro
.NET Framework 1.1
VS.NET 2003
C#

マウスクリックで、Enter, GotFocusのイベントは動きます。
処理内容を考えると、GotFocusはよろしくないかと。

#確認の仕方が違います?
#フォームにTextBoxとボタンを貼り付けて、上記イベント内でDebug()
#ボタンをアクティブにした状態で、TextBoxをクリック
yamaodasu
会議室デビュー日: 2004/08/26
投稿数: 5
投稿日時: 2004-08-26 17:36
カニさん、nanbuさんありがとうございます。

nanbuの仰るとおり、マウスClick時、
Enterイベント(で確認しましたが)は動いてました!

が、Enterイベント内でTextBox内の内容を全選択させる処理を
行っているのですが、Click時はうまく動かないようです。。。

Tabによる移動時はうまく動くのですが・・・

因みに、VB6.0からのシステム移行で、VB6.0では動いてました。
記述内容は異なりますが・・・

もうちょっと確認してみます。

以下、処理内容
'テキストボックスのEnterイベントプロシージャ
Private Sub TxtRef_Enter(ByVal eventSender As System.Object, ByVal _
            eventArgs As System.EventArgs) Handles TxtRef.Enter

Call gSelectText(eventSender) ''テキストの内容を全て選択関数を呼ぶ

End Sub

'テキストボックスの内容を全選択させる関数
Public Sub gSelectText(ByVal txtBox As Object)
txtBox.SelectionStart = 0
txtBox.SelectionLength = Len(txtBox.Text)
End Sub
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-26 18:19
引用:

yamaodasuさんの書き込み (2004-08-26 17:36) より:
コード:
'テキストボックスの内容を全選択させる関数
Public Sub gSelectText(ByVal txtBox As Object)
        txtBox.SelectionStart = 0 
        txtBox.SelectionLength = Len(txtBox.Text) 
End Sub





コード:
'テキストボックスの内容を全選択させる関数
Public Sub gSelectText(ByVal txtBox As Object)
        TextBox tbx = CType(txtBox, System.Windows.Forms.TextBox)
        tbx.SelectAll()
End Sub


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-26 18:33
 Enterイベントが発生するのは、マウスボタンを押したときです。そしてその後に、マウスボタンを離すイベントが発生します。この間に「ドラッグ」処理があるわけですが、ドラッグによって選択範囲を変えられますから、その為にEnterイベントで選択した範囲が消えているようです。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-08-26 18:39
yamaodasuさん、こんばんは。

引用:

が、Enterイベント内でTextBox内の内容を全選択させる処理を
行っているのですが、Click時はうまく動かないようです。。。


今のWindowsの標準的なテキストボックスって、マウスクリックによるフォーカス取得時には、全選択されなくて正解のような気がします。

ちなみに、テキスト全選択メソッドは TextBox によって実装済みです。
コード:

'テキストボックスのEnterイベントプロシージャ
Private Sub TxtRef_Enter(ByVal eventSender As System.Object, ByVal _
            eventArgs As System.EventArgs) Handles TxtRef.Enter

'Call gSelectText(eventSender) ''テキストの内容を全て選択関数を呼ぶ
'↓
CType(eventSender, TextBox).SelectAll()
End Sub



【追記】
被ってました...。


[ メッセージ編集済み 編集者: きくちゃん 編集日時 2004-08-26 20:33 ]
yamaodasu
会議室デビュー日: 2004/08/26
投稿数: 5
投稿日時: 2004-08-26 19:26
Jittaさん、きくちゃんさんありがとうございます。

VB6.0と同じ動きにして!といわれたのですが、
VB6.0ではクリック時に全選択しちゃってるんですよね。
僕も不必要とは思うのですが、ユーザさんは便利らしく。。。

勉強になりました!
実装済みなんですか?知らなかった・・・
ちなみにどのプロパティですか?
一応一通り調べたつもりだったのですが

調査不足、ですね。すみません。。。

スキルアップ/キャリアアップ(JOB@IT)