C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 161 を表示中)
■93046 / )  Re[10]: TrackBarでクリックした位置に移動する方法
□投稿者/ 小次郎 (12回)-(2019/11/16(Sat) 16:19:51)
以下でできました。

Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = &H201 Then ' WM_LBUTTONDOWN


Dim x As Integer = SignedLOWORD(m.LParam)
Dim y As Integer = SignedHIWORD(m.LParam)

Dim channel As Rectangle = GetChanelRectangle()

If x < 0 OrElse x > channel.Width OrElse y < 0 OrElse y > channel.Height Then
' Exit Sub
End If

Dim TrackBar1_Maximum As Integer = GetRangeMax()
Dim TrackBar1_Minimum As Integer = GetRangeMin()


' If y >= channel.Top AndAlso y <= channel.Bottom Then


If x < channel.Left Then

Call SetSliderPosi(TrackBar1_Minimum)
' MyBase.WndProc(m)
' Exit Sub

ElseIf x > channel.Right Then

Call SetSliderPosi(TrackBar1_Maximum)
' MyBase.WndProc(m)
' Exit Sub

Else

Dim ticWidth As Double = channel.Width / (TrackBar1_Maximum - TrackBar1_Minimum)
Dim SetPosi As Integer = CInt((x - channel.Left) / ticWidth) + TrackBar1_Minimum
Call SetSliderPosi(SetPosi)

' MyBase.WndProc(m)
'Exit Sub

End If


' End If

m.Result = IntPtr.Zero
Return

End If
MyBase.WndProc(m)
End Sub


しかし、このままだとスライダーを動かすことはできるのですが、
MouseDownのコードが実行されません。


m.Result = IntPtr.Zero
Return

を削除すると実行されるのですが、
Trackbarの右端や左端を押した時に、
スライダーだけが移動し、MouseDownは実行されない現象が起きます。

一体どうすれば良いでしょうか?


返信 編集キー/


管理者用

- Child Tree -