トップ回答者
画面上のコントロールをドラッグさせたいのですがどうしたら良いでしょうか?
-
はじめまして
Tech-Bee と申します。
標準コントロールのスライダーは幅が狭く操作し辛かったので、幅が広いスライダーを作ろうと考えています。
具体的には、ユーザーコントロールに配置した Rectangle コントロールをスライダーのつまみとして移動した位置によってコントロールの値にすることを想定しています。
指での操作によってどれだけの距離をドラッグしたのかの検知方法、その距離分コントロールを移動させる方法がわかりません
ご教授いただけないでしょうか
ちなみに自分自身やりたいことを明確にするために上記要件を Wondows 版の VB.net で作成したのが下記ソースです。
※ Windows 版では Rectangle ではなく Panel を使用しています。
= Windows 版 Sample ============================================================
Private mousePoint As Point
Private m_intInnerValue As Integer = 0
Private m_intMaximum As Integer = 100
Private m_intMinimum As Integer = 0Private Sub pnlSrider_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pnlSrider.MouseDown
If (e.Button And MouseButtons.Left) = MouseButtons.Left Then
mousePoint = New Point(e.X, 0)
End If
End SubPrivate Sub pnlSrider_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pnlSrider.MouseMove
Dim intLeft As Integer = 0
Dim intValue As Integer = 0
If (e.Button And MouseButtons.Left) = MouseButtons.Left Then
intLeft = pnlSrider.Left + e.X - mousePoint.X
If intLeft >= 0 And intLeft <= Me.Width - pnlSrider.Width Then
pnlSrider.Left = intLeft
intValue = mfnc_intValue()
lblValue.Text = CStr(intValue)
End If
End If
End SubPrivate Function mfnc_intValue() As Integer
Dim intRET As Integer = 0
Dim intGap As Integer = m_intMaximum - m_intMinimum
intRET = intGap / (Me.Width - pnlSrider.Width) * pnlSrider.Left + m_intMinimum
Return intRET
End Function================================================================================
恐れ入りますがよろしくお願いいたします。以上
Question
回答
-
ひょうだい目的が、オブジェクトのドラッグではなく、スライダーコントロールの作成ならスタイルを使って標準のスライダーコントロールのUIをカスタマイズするのが一番簡単です。
http://msdn.microsoft.com/ja-jp/library/ee371160(v=expression.40).aspx
マイクロソフト エバンジェリスト 高橋 忍
すべての返信
-
ひょうだい目的が、オブジェクトのドラッグではなく、スライダーコントロールの作成ならスタイルを使って標準のスライダーコントロールのUIをカスタマイズするのが一番簡単です。
http://msdn.microsoft.com/ja-jp/library/ee371160(v=expression.40).aspx
マイクロソフト エバンジェリスト 高橋 忍
-
-

