フォーカスを外すには
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2010/1/20 03:55:27
> testboxに
TextBox ?
> panelやformをクリックしてフォーカスを外したいんですが
それぞれの Click イベントに、「ActiveControl = Nothing」と書いておくのは如何でしょう。
あるいはこんな方法とか。あまりお奨めはしませんけれども。
TextBox ?
> panelやformをクリックしてフォーカスを外したいんですが
それぞれの Click イベントに、「ActiveControl = Nothing」と書いておくのは如何でしょう。
あるいはこんな方法とか。あまりお奨めはしませんけれども。
Public Class Form1
Protected Overrides Sub WndProc(ByRef m As Message)
Const WM_LBUTTONDOWN As Integer = &H201
Const WM_PARENTNOTIFY As Integer = &H210
If m.Msg = WM_LBUTTONDOWN Then
ActiveControl = Nothing
ElseIf m.Msg = WM_PARENTNOTIFY Then
If (m.WParam.ToInt32() And &HFFFFI) = WM_LBUTTONDOWN Then
ActiveControl = Nothing
End If
End If
MyBase.WndProc(m)
End Sub
End Class
投稿者 ultie  (高校生)
投稿日時
2010/1/20 06:55:45
回答ありがとうございます。
2番目の方法は何をやっているか理解できなかったのですが、最初の方法でできました。
またお世話になるかもしれませんが、よろしくお願いします。
2番目の方法は何をやっているか理解できなかったのですが、最初の方法でできました。
またお世話になるかもしれませんが、よろしくお願いします。
投稿者 へ  (社会人)
投稿日時
2010/1/21 00:42:06
でも、そうすると入力後のタブ移動とかできなくなるよね?
何でそんなことしたいと思ったの??
すごく使いにくそうなんだけど。
何でそんなことしたいと思ったの??
すごく使いにくそうなんだけど。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2010/1/21 00:50:39
> でも、そうすると入力後のタブ移動とかできなくなるよね?
具体的にはどういう状態でしょうか?
# 「panelやformをクリックした時」と「タブ移動した時」は別のタイミングなので、
# タブ移動への影響は無いと思っていました。
具体的にはどういう状態でしょうか?
# 「panelやformをクリックした時」と「タブ移動した時」は別のタイミングなので、
# タブ移動への影響は無いと思っていました。
投稿者 ultie  (高校生)
投稿日時
2010/1/21 01:17:30
今回質問したことの目的ですが、ComboBoxで選択した後まだフォーカスがある(青で反転している)状態でページをスクロールしたいときに、マウスでスクロールするとリストのほうがスクロールされてしまうので、それを解消するためです。
タブ移動については、特に問題なかったのですが、ほかにも何か良い方法があるでしょうか?
タブ移動については、特に問題なかったのですが、ほかにも何か良い方法があるでしょうか?
投稿者 ヴァン  (社会人)
投稿日時
2010/1/21 01:50:23
この場合はマウスのスクロールをキャンセルするようにするのが正解かと。
ComboBoxを継承したクラスを作成して、スクロールのメッセージを除けば出来ますよ。
ComboBoxを継承したクラスを作成して、スクロールのメッセージを除けば出来ますよ。
投稿者 在浩  (社会人)
投稿日時
2010/1/21 09:24:55
Option Explicit
Private Sub Form_Load()
txtView ="ああ"
End Sub
Private Sub cbo1_Click()
txtView.SetFocus
End Sub
ComboBoxの内容が変わるとFocusがTEXTBOXコントロールに移動され、スクロールされていません。
必要とするコードがLoadイベントに記述すると、一切できませんのでformにsetfocusメソッドを使用することが
ご利用いただけます。したがって、TEXTBOXあるいはCOMMAND BUTTONのFOCUSを受け取ることができるコントロールが必要です。
この方法以外に、他の方法がある場合は、Hookingを参照してください。
回答の内容が正しいかよく分からないです。
Private Sub Form_Load()
txtView ="ああ"
End Sub
Private Sub cbo1_Click()
txtView.SetFocus
End Sub
ComboBoxの内容が変わるとFocusがTEXTBOXコントロールに移動され、スクロールされていません。
必要とするコードがLoadイベントに記述すると、一切できませんのでformにsetfocusメソッドを使用することが
ご利用いただけます。したがって、TEXTBOXあるいはCOMMAND BUTTONのFOCUSを受け取ることができるコントロールが必要です。
この方法以外に、他の方法がある場合は、Hookingを参照してください。
回答の内容が正しいかよく分からないです。
質問ですが、
testboxに文字を入力したり、comboboxで選択した後、panelやformをクリックしてフォーカスを外したいんですが、どうすればいいでしょうか?