作成日: 2018/02/02 最終更新日: 2018/03/28
文書種別
不具合
状況
修正済み
詳細
マウスホイールを使用して上下にスクロールする行の数は、以前は3行でしたが、現行版ではヘッダの高さに影響を受け、ヘッダの高さ× 3の量でスクロールしてしまいます。
回避方法
この問題はバージョン4.0.20181.296で修正されました
※修正版を適用しない場合の回避方法は以下の通りです
BeforeScrollイベントとMouseWheelイベントを使用して、マウスホイールのスクロール量を調整します。
◎サンプルコード(VB)
◎サンプルコード(C#)
※修正版を適用しない場合の回避方法は以下の通りです
BeforeScrollイベントとMouseWheelイベントを使用して、マウスホイールのスクロール量を調整します。
◎サンプルコード(VB)
Dim m_iWheelRow As Int32 = -1
Dim m_blPageUpDownFlg As Boolean = False
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AddHandler Me.C1FlexGrid1.BeforeScroll, AddressOf _beforescroll
AddHandler Me.C1FlexGrid1.MouseWheel, AddressOf _mousewheel
End Sub
Private Sub _mousewheel(sender As Object, e As MouseEventArgs)
Dim grid As C1FlexGrid = TryCast(sender, C1FlexGrid)
If grid Is Nothing Then
Return
End If
If m_iWheelRow <> -1 Then
If e.Delta > 0 Then
grid.TopRow = m_iWheelRow - 3
Else
grid.TopRow = m_iWheelRow + 3
End If
m_iWheelRow = -1
grid.Invalidate()
End If
End Sub
Private Sub _beforescroll(sender As Object, e As RangeEventArgs)
Dim grid As C1FlexGrid = TryCast(sender, C1FlexGrid)
If grid Is Nothing Then
Return
End If
If e.OldRange.TopRow - e.NewRange.TopRow = 1 OrElse e.NewRange.TopRow - e.OldRange.TopRow = 1 Then
Else
If e.NewRange.TopRow - e.OldRange.TopRow > 3 Then
e.Cancel = True
m_iWheelRow = e.OldRange.TopRow
grid.Invalidate()
m_blPageUpDownFlg = False
ElseIf e.OldRange.TopRow - e.NewRange.TopRow > 3 Then
e.Cancel = True
m_iWheelRow = e.OldRange.TopRow
grid.Invalidate()
End If
End If
End Sub
Dim m_blPageUpDownFlg As Boolean = False
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AddHandler Me.C1FlexGrid1.BeforeScroll, AddressOf _beforescroll
AddHandler Me.C1FlexGrid1.MouseWheel, AddressOf _mousewheel
End Sub
Private Sub _mousewheel(sender As Object, e As MouseEventArgs)
Dim grid As C1FlexGrid = TryCast(sender, C1FlexGrid)
If grid Is Nothing Then
Return
End If
If m_iWheelRow <> -1 Then
If e.Delta > 0 Then
grid.TopRow = m_iWheelRow - 3
Else
grid.TopRow = m_iWheelRow + 3
End If
m_iWheelRow = -1
grid.Invalidate()
End If
End Sub
Private Sub _beforescroll(sender As Object, e As RangeEventArgs)
Dim grid As C1FlexGrid = TryCast(sender, C1FlexGrid)
If grid Is Nothing Then
Return
End If
If e.OldRange.TopRow - e.NewRange.TopRow = 1 OrElse e.NewRange.TopRow - e.OldRange.TopRow = 1 Then
Else
If e.NewRange.TopRow - e.OldRange.TopRow > 3 Then
e.Cancel = True
m_iWheelRow = e.OldRange.TopRow
grid.Invalidate()
m_blPageUpDownFlg = False
ElseIf e.OldRange.TopRow - e.NewRange.TopRow > 3 Then
e.Cancel = True
m_iWheelRow = e.OldRange.TopRow
grid.Invalidate()
End If
End If
End Sub
◎サンプルコード(C#)
Int32 m_iWheelRow = -1;
bool m_blPageUpDownFlg = false;
private void Form1_Load(object sender, EventArgs e)
{
this.c1FlexGrid1.BeforeScroll += new C1.Win.C1FlexGrid.RangeEventHandler(this._beforescroll);
this.c1FlexGrid1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this._mousewheel);
}
private void _mousewheel(object sender, MouseEventArgs e)
{
C1FlexGrid grid = sender as C1FlexGrid;
if ((grid == null))
{
return;
}
if ((m_iWheelRow != -1))
{
if ((e.Delta > 0))
{
grid.TopRow = (m_iWheelRow - 3);
}
else
{
grid.TopRow = (m_iWheelRow + 3);
}
m_iWheelRow = -1;
grid.Invalidate();
}
}
private void _beforescroll(object sender, RangeEventArgs e)
{
C1FlexGrid grid = sender as C1FlexGrid;
if ((grid == null))
{
return;
}
if ((e.NewRange.TopRow - e.OldRange.TopRow) > 3)
{
e.Cancel = true;
m_iWheelRow = e.OldRange.TopRow;
grid.Invalidate();
m_blPageUpDownFlg = false;
}
else if ((e.OldRange.TopRow - e.NewRange.TopRow) > 3)
{
e.Cancel = true;
m_iWheelRow = e.OldRange.TopRow;
grid.Invalidate();
}
}
bool m_blPageUpDownFlg = false;
private void Form1_Load(object sender, EventArgs e)
{
this.c1FlexGrid1.BeforeScroll += new C1.Win.C1FlexGrid.RangeEventHandler(this._beforescroll);
this.c1FlexGrid1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this._mousewheel);
}
private void _mousewheel(object sender, MouseEventArgs e)
{
C1FlexGrid grid = sender as C1FlexGrid;
if ((grid == null))
{
return;
}
if ((m_iWheelRow != -1))
{
if ((e.Delta > 0))
{
grid.TopRow = (m_iWheelRow - 3);
}
else
{
grid.TopRow = (m_iWheelRow + 3);
}
m_iWheelRow = -1;
grid.Invalidate();
}
}
private void _beforescroll(object sender, RangeEventArgs e)
{
C1FlexGrid grid = sender as C1FlexGrid;
if ((grid == null))
{
return;
}
if ((e.NewRange.TopRow - e.OldRange.TopRow) > 3)
{
e.Cancel = true;
m_iWheelRow = e.OldRange.TopRow;
grid.Invalidate();
m_blPageUpDownFlg = false;
}
else if ((e.OldRange.TopRow - e.NewRange.TopRow) > 3)
{
e.Cancel = true;
m_iWheelRow = e.OldRange.TopRow;
grid.Invalidate();
}
}
旧文書番号
82516