作成日: 2022/02/17 最終更新日: 2022/02/17
文書種別
使用方法
詳細
Microsoft Excelのように、マウスのホイールをクリックし、マウスを上下左右に動かすことで、画面を上下左右にスクロールする機能は、本コントロールには用意されておりません。
代替方法として、C1GanttViewのMouseDown/MouseMove/MouseUpイベントを使用し、マウスホイールが押されたときのマウスの動きを取得 し、GanttViewの内部コントロールであるC1FlexGridのScrollPositionプロパティを使用してスクロールを制御する方法が考えられます。
◎サンプルコード(VB)
代替方法として、C1GanttViewのMouseDown/MouseMove/MouseUpイベントを使用し、マウスホイールが押されたときのマウスの動きを取得 し、GanttViewの内部コントロールであるC1FlexGridのScrollPositionプロパティを使用してスクロールを制御する方法が考えられます。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Dim middleDown As Boolean = False
Dim lastLocation As Point = New Point(0, 0)
Private Sub C1GanttView1_MouseDown(sender As Object, e As MouseEventArgs) Handles C1GanttView1.MouseDown
If (e.Button = MouseButtons.Middle) Then
middleDown = True
lastLocation = e.Location
End If
End Sub
Private Sub C1GanttView1_MouseMove(sender As Object, e As MouseEventArgs) Handles C1GanttView1.MouseMove
If middleDown Then
' 水平、垂直の移動距離を計測
Dim vertical = (lastLocation.Y - e.Y)
Dim horizontal = (lastLocation.X - e.X)
' 現在の位置を保存
lastLocation = e.Location
' 内部グリッドを取得
Dim grid1 = CType(C1GanttView1.Controls(0), C1FlexGrid)
' 内部グリッドをスクロール
grid1.ScrollPosition = New Point((grid1.ScrollPosition.X + horizontal), (grid1.ScrollPosition.Y + vertical))
End If
End Sub
Private Sub C1GanttView1_MouseUp(sender As Object, e As MouseEventArgs) Handles C1GanttView1.MouseUp
middleDown = False
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.C1FlexGrid;
namespace GanttViewScroll
{
public partial class Form1 : Form
{
bool middleDown = false;
Point lastLocation = new Point(0,0);
public Form1()
{
InitializeComponent();
}
private void c1GanttView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Middle) {
middleDown = true;
lastLocation = e.Location;
}
}
private void c1GanttView1_MouseMove(object sender, MouseEventArgs e)
{
if (middleDown) {
// 水平、垂直の移動距離を計測
var vertical = lastLocation.Y - e.Y;
var horizontal = lastLocation.X - e.X;
// 現在の位置を保存
lastLocation = e.Location;
// 内部グリッドを取得
var grid1 = c1GanttView1.Controls[0] as C1FlexGrid;
// 内部グリッドをスクロール
grid1.ScrollPosition = new Point(grid1.ScrollPosition.X + horizontal, grid1.ScrollPosition.Y + vertical);
}
}
private void c1GanttView1_MouseUp(object sender, MouseEventArgs e)
{
middleDown = false;
}
}
}