* UIDataGridView: 修复了有冻结行时垂直滚动条点击时出错的问题
This commit is contained in:
parent
ec60c9af19
commit
2798c6d59a
@ -45,6 +45,7 @@
|
|||||||
* 2022-07-28: V3.2.2 修复了单行时表格高度低时,垂直滚动条拖拽至底部出错的问题
|
* 2022-07-28: V3.2.2 修复了单行时表格高度低时,垂直滚动条拖拽至底部出错的问题
|
||||||
* 2022-10-14: V3.2.6 增加了可设置垂直滚动条宽度的属性
|
* 2022-10-14: V3.2.6 增加了可设置垂直滚动条宽度的属性
|
||||||
* 2023-06-28: V3.3.9 增加了可设置水平滚动条宽度的属性,但可能会遮挡最下面数据行的数据,看情况使用
|
* 2023-06-28: V3.3.9 增加了可设置水平滚动条宽度的属性,但可能会遮挡最下面数据行的数据,看情况使用
|
||||||
|
* 2023-07-12: V3.4.0 修复了有冻结行时垂直滚动条点击时出错的问题
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
@ -369,6 +370,23 @@ namespace Sunny.UI
|
|||||||
if (idx < 0) idx = 0;
|
if (idx < 0) idx = 0;
|
||||||
if (idx >= RowCount) idx = RowCount - 1;
|
if (idx >= RowCount) idx = RowCount - 1;
|
||||||
|
|
||||||
|
int lastFrozen = GetFrozenBottomIndex();
|
||||||
|
if (Rows[0].Frozen)
|
||||||
|
{
|
||||||
|
if (RowCount > lastFrozen + 1)
|
||||||
|
{
|
||||||
|
lastFrozen += 1;
|
||||||
|
FirstDisplayedScrollingRowIndex = Math.Max(idx, lastFrozen);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FirstDisplayedScrollingRowIndex = idx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int GetFrozenBottomIndex()
|
||||||
|
{
|
||||||
int lastFrozen = 0;
|
int lastFrozen = 0;
|
||||||
if (Rows[0].Frozen)
|
if (Rows[0].Frozen)
|
||||||
{
|
{
|
||||||
@ -385,12 +403,7 @@ namespace Sunny.UI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Rows[0].Frozen)
|
return lastFrozen;
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
FirstDisplayedScrollingRowIndex = Math.Max(idx, lastFrozen);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HorizontalScrollBar_ValueChanged(object sender, EventArgs e)
|
private void HorizontalScrollBar_ValueChanged(object sender, EventArgs e)
|
||||||
@ -753,7 +766,20 @@ namespace Sunny.UI
|
|||||||
}
|
}
|
||||||
|
|
||||||
Rows[value].Selected = true;
|
Rows[value].Selected = true;
|
||||||
FirstDisplayedScrollingRowIndex = value;
|
|
||||||
|
int lastFrozen = GetFrozenBottomIndex();
|
||||||
|
if (Rows[0].Frozen)
|
||||||
|
{
|
||||||
|
if (RowCount > lastFrozen + 1)
|
||||||
|
{
|
||||||
|
lastFrozen += 1;
|
||||||
|
FirstDisplayedScrollingRowIndex = Math.Max(value, lastFrozen);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FirstDisplayedScrollingRowIndex = value;
|
||||||
|
}
|
||||||
|
|
||||||
if (selectedIndex >= 0 && selectedIndex <= Rows.Count)
|
if (selectedIndex >= 0 && selectedIndex <= Rows.Count)
|
||||||
jumpIndex = selectedIndex;
|
jumpIndex = selectedIndex;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user