• 締切
  • すぐに回答を!

ユニバーサルスクロールが使えるようにするには?

  • 質問No.3297402
  • 閲覧数1023
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 95% (19/20)

Visual Basic2005で開発中です。
プログラムを実行し、DataGridView上でマウスのユニバーサルスクロール機能(オートスクロール機能)が使えるようにしたいのですが、どこで設定をすればいいのでしょうか?
マウスはエクセル上では、ユニバーサルスクロール機能が使える状態です。
初めての Visual Basic2005での開発で、わからないことばかりです。
お願いします。

回答 (全1件)

  • 回答No.1

ベストアンサー率 71% (172/242)

お世話になります。

勉強不足でオートスクロール機能というのが
どういうものを指すのかわからないのですが、
マウスの動きに追随してセルやスクロールする、という意味であっていれば以下の実装で出来ました。
結構めんどくさかったし、ソースももうちょっときれいに書き直せると思います。

Private Sub DataGridView1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseMove
  Dim hInfo As DataGridView.HitTestInfo = _
  Me.DataGridView1.HitTest(e.X, e.Y)
  Debug.WriteLine("hInfo:" & hInfo.ToString())

  Dim nextRowIndex As Integer = 0
  Dim nextColumnIndex As Integer = 0

  If hInfo.Type = DataGridViewHitTestType.Cell Then
    nextRowIndex = hInfo.RowIndex
    nextColumnIndex = hInfo.ColumnIndex
  ElseIf hInfo.Type = DataGridViewHitTestType.ColumnHeader OrElse _
     hInfo.Type = DataGridViewHitTestType.VerticalScrollBar Then
    If hInfo.RowIndex > Me.DataGridView1.CurrentCell.RowIndex Then
      nextRowIndex = Me.DataGridView1.CurrentCell.RowIndex + 1
    ElseIf Me.DataGridView1.CurrentCell.RowIndex >= 0 Then
      nextRowIndex = Me.DataGridView1.CurrentCell.RowIndex - 1
    End If
    nextColumnIndex = hInfo.ColumnIndex
  ElseIf hInfo.Type = DataGridViewHitTestType.RowHeader OrElse _
     hInfo.Type = DataGridViewHitTestType.HorizontalScrollBar Then
    If hInfo.ColumnIndex > Me.DataGridView1.CurrentCell.ColumnIndex Then
      nextColumnIndex = Me.DataGridView1.CurrentCell.ColumnIndex + 1
    ElseIf Me.DataGridView1.CurrentCell.ColumnIndex >= 0 Then
      nextColumnIndex = Me.DataGridView1.CurrentCell.ColumnIndex - 1
    End If
    nextRowIndex = hInfo.RowIndex
  Else
    Exit Sub
  End If
  If nextRowIndex < 0 Then nextRowIndex = 0
  If nextRowIndex > Me.DataGridView1.RowCount - 1 Then nextRowIndex = Me.DataGridView1.RowCount - 1
  If nextColumnIndex < 0 Then nextColumnIndex = 0
  If nextColumnIndex > Me.DataGridView1.ColumnCount - 1 Then nextColumnIndex = Me.DataGridView1.ColumnCount - 1

  Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(nextRowIndex).Cells(nextColumnIndex)
  Me.DataGridView1.FirstDisplayedCell = Me.DataGridView1.CurrentCell
End Sub
お礼コメント
JJ-TO

お礼率 95% (19/20)

早速のご回答、ありがとうございます。
ユニバーサルスクロール機能というのは、スクロールマウスのスクロール部分を押すと、カーソルの形が変わり、マウスを動かした方へスクロールするという機能です。
機能としては、スクロール部分をクリックした後、記述していただいたようにマウスの動きに合わせて、画面がスクロールすればよいのですが、申し訳ないのですが、私が思ったような動きではないです。
短時間の間に、テストまでしていただきまして、ありがとうございます。
心から感謝いたします。
投稿日時:2007/08/29 19:19
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

ピックアップ

ページ先頭へ