プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (1件)

お世話になります。



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

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
    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございます。
ユニバーサルスクロール機能というのは、スクロールマウスのスクロール部分を押すと、カーソルの形が変わり、マウスを動かした方へスクロールするという機能です。
機能としては、スクロール部分をクリックした後、記述していただいたようにマウスの動きに合わせて、画面がスクロールすればよいのですが、申し訳ないのですが、私が思ったような動きではないです。
短時間の間に、テストまでしていただきまして、ありがとうございます。
心から感謝いたします。

お礼日時:2007/08/29 19:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!