* UIDataGridView:修正有列隐藏时水平滚动条重绘出错。

This commit is contained in:
Sunny 2020-07-19 10:45:00 +08:00
parent d63d8e6ce9
commit 3c742b2b67
7 changed files with 29 additions and 5 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -60,7 +60,8 @@
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.uiDataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
this.uiDataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.uiDataGridView1.ColumnHeadersHeight = 32;
this.uiDataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 12F);

View File

@ -1,5 +1,4 @@
using System.Collections.Generic;
using System.Windows.Forms;
namespace Sunny.UI.Demo
{

View File

@ -89,7 +89,20 @@ namespace Sunny.UI
private void HBar_ValueChanged(object sender, EventArgs e)
{
FirstDisplayedScrollingColumnIndex = HBar.Value;
int idx = 0;
for (int i = 0; i < ColumnCount; i++)
{
if (Columns[i].Visible && idx == HBar.Value)
{
FirstDisplayedScrollingColumnIndex = i;
break;
}
if (Columns[i].Visible)
{
idx++;
}
}
}
public void Init()
@ -168,7 +181,7 @@ namespace Sunny.UI
if (HorizontalScrollBar.Visible)
{
HBar.Maximum = ColumnCount - 1;
HBar.Maximum = VisibleColumnCount() - 1;
HBar.Value = FirstDisplayedScrollingColumnIndex;
HBar.Visible = true;
}
@ -180,6 +193,17 @@ namespace Sunny.UI
SetBarPosition();
}
private int VisibleColumnCount()
{
int cnt = 0;
foreach (DataGridViewColumn column in Columns)
{
if (column.Visible) cnt++;
}
return cnt;
}
protected override void OnMouseWheel(MouseEventArgs e)
{
base.OnMouseWheel(e);