none
画面上のコントロールをドラッグさせたいのですがどうしたら良いでしょうか?

    Question

  • はじめまして

    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 = 0

        Private 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 Sub

        Private 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 Sub

        Private 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

    ================================================================================
    恐れ入りますがよろしくお願いいたします。

    以上


    2012年3月17日 5:14

回答

すべての返信

  • ひょうだい目的が、オブジェクトのドラッグではなく、スライダーコントロールの作成ならスタイルを使って標準のスライダーコントロールのUIをカスタマイズするのが一番簡単です。

    http://msdn.microsoft.com/ja-jp/library/ee371160(v=expression.40).aspx


    マイクロソフト エバンジェリスト 高橋 忍

    2012年3月18日 1:28
  • 高橋様

    ありがとうございます。

    表記のページを見ながらやってみていますがまだうまく出来ていません

    ブレンドの使い方から憶えなければならないために勉強しながら進めてみます。

    2012年3月18日 15:03
  • ありがとうございます。

    完全に自分が意図したコントロールを作ることが出来ました。

    指の太い私にも快適に操作できます♪

    2012年4月27日 22:48