• 締切済み

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

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

みんなの回答

回答No.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

JJ-TO
質問者

お礼

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

関連するQ&A